. "$PSScriptRoot/Context.ps1";

function Install-SoftwarePackage([Context] $context, [string] $location, [string[]] $argumentList = @("/S"), [switch]$local) {
    [string]$filePath = "";
    [string]$tempDir = $null;

    if (-not ($local.IsPresent)) {
        $tempDir = $context.GetTempDirectory();
        Write-Information "Determining the file name of $location";
        $fileName = ([uri]$location).Segments[-1];
        Write-Information "$fileName";
        $filePath = Join-Path $tempDir $fileName;

        Write-Information "Downloading setup file from $location";
        Invoke-WebRequest $location -OutFile $filePath;
    } else {
        $filePath = $location;
    }

    $fileName = [System.IO.Path]::GetFileName($filePath);
    Write-Information "Starting installation of $fileName";
    Start-Process -Wait -FilePath $filePath -ArgumentList $argumentList;

    if ($tempDir) {
        Remove-Item -Recurse $tempDir;
    }
}