. "$PSScriptRoot/../../../lib/Software.ps1";
. "$PSScriptRoot/../../../Common/Software/powershell/Module.ps1";

$parameters = Get-ModuleInstallerComponents "PinnedItem" -NativeOnly -NoProfile;

foreach ($key in $PSBoundParameters.Keys) {
    $parameters.Add($key, $PSBoundParameters.TryGetValue($key));
}

$context = $parameters.context;
$context.Add("Installer", $parameters.installer);

Start-SoftwareInstaller -Force @args @parameters -Installer {
    param(
        [hashtable] $Context
    )

    $providerName = "NuGet";
    $module = $Context.Name;

    if ({ $null = powershell -c "Get-PackageProvider -ListAvailable $providerName"; $? }) {
        $null = powershell -c "Install-PackageProvider -Force $providerName -Scope AllUsers";
    }

    & $Context.Installer @PSBoundParameters;

    if (-not (& { powershell -NoProfile -Command "Import-Module $module; exit ([bool]`$Error)" 2> $null; $?; })) {
        $feature = "NetFx3";

        if ((Get-WindowsOptionalFeature -Online -FeatureName $feature).State -ne "Enabled") {
            Write-Host "Enabling ``$feature`` featureā€¦";
            choco install --source windowsFeatures  -y $feature;
        }
    }
}