tooling/ActionTypes/UseNuget.xscript.ps1
#:xheader: #Type=ActionType; #:xheader: @{ Clean = { Param([ConfigAutomationContext] $context,[UIAction] $action) return $true }; Action = { Param([ConfigAutomationContext] $context,[UIAction] $action) $extracted = $action.Parameters().Extract(@("NugetVersion")) $temp = New-TemporaryFile $exe = [System.IO.Path]::ChangeExtension($temp, "exe") ren $temp $exe $nugetFile = $exe $context.Display("Downloading NuGet {white}v$($nugetFile){gray}") Invoke-WebRequest -Uri https://dist.nuget.org/win-x86-commandline/v$($extracted.NugetVersion)/nuget.exe -OutFile $nugetFile $context.InjectOutputVariable($action, "NugetExePath", $nugetFile) $context.PushScope($context.GetRootScope()) $xml = [XML]@" <ConfigAutomation> <PostAction Name="Cleaning Nuget Exe - Deleting $($nugetFile)" Type="CleanFolder"> <Parameter Name="Folder" Value="$($nugetFile)"/> </PostAction> </ConfigAutomation> "@ $context.PopulateFromXml($xml.ConfigAutomation, $context.CurrentScope()) $context.PopScope() return $true }; CanExecute = { Param([ConfigAutomationContext] $context,[UIAction] $action) return $true }; Validate = { Param([ConfigAutomationContext] $context,[UIAction] $action) if(-not $action.Parameters().Validate(@("NugetVersion"))){ return $false } $context.InjectOutputVariable($action, "NugetExePath","Test Version") return $true }; } |