diff --git a/.gitignore b/.gitignore index b37b1c5832..a488577288 100644 --- a/.gitignore +++ b/.gitignore @@ -148,4 +148,5 @@ src/PrecompiledWeb/* # build build.out/ build.tmp/ -build/Modules/*/temp/ \ No newline at end of file +build/Modules/*/temp/ +build/hooks/ \ No newline at end of file diff --git a/build/Modules/Umbraco.Build/Get-UmbracoBuildEnv.ps1 b/build/Modules/Umbraco.Build/Get-UmbracoBuildEnv.ps1 index d1aaf7582f..0bd081bdae 100644 --- a/build/Modules/Umbraco.Build/Get-UmbracoBuildEnv.ps1 +++ b/build/Modules/Umbraco.Build/Get-UmbracoBuildEnv.ps1 @@ -5,18 +5,11 @@ # function Get-UmbracoBuildEnv { - # store tools in the module's directory - # and cache them for two days - $path = "$PSScriptRoot\temp" + # cache for 2 days $cache = 2 - if (-not (test-path $path)) - { - mkdir $path > $null - } - # ensure we have NuGet - $nuget = "$path\nuget.exe" + $nuget = "$scriptTemp\nuget.exe" $source = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" if ((test-path $nuget) -and ((ls $nuget).CreationTime -lt [DateTime]::Now.AddDays(-$cache))) { @@ -29,7 +22,7 @@ function Get-UmbracoBuildEnv } # ensure we have 7-Zip - $sevenZip = "$path\7za.exe" + $sevenZip = "$scriptTemp\7za.exe" if ((test-path $sevenZip) -and ((ls $sevenZip).CreationTime -lt [DateTime]::Now.AddDays(-$cache))) { Remove-File $sevenZip @@ -37,15 +30,15 @@ function Get-UmbracoBuildEnv if (-not (test-path $sevenZip)) { Write-Host "Download 7-Zip..." - &$nuget install 7-Zip.CommandLine -OutputDirectory $path -Verbosity quiet - $dir = ls "$path\7-Zip.CommandLine.*" | sort -property Name -descending | select -first 1 + &$nuget install 7-Zip.CommandLine -OutputDirectory $scriptTemp -Verbosity quiet + $dir = ls "$scriptTemp\7-Zip.CommandLine.*" | sort -property Name -descending | select -first 1 $file = ls -path "$dir" -name 7za.exe -recurse mv "$dir\$file" $sevenZip Remove-Directory $dir } # ensure we have vswhere - $vswhere = "$path\vswhere.exe" + $vswhere = "$scriptTemp\vswhere.exe" if ((test-path $vswhere) -and ((ls $vswhere).CreationTime -lt [DateTime]::Now.AddDays(-$cache))) { Remove-File $vswhere @@ -53,15 +46,15 @@ function Get-UmbracoBuildEnv if (-not (test-path $vswhere)) { Write-Host "Download VsWhere..." - &$nuget install vswhere -OutputDirectory $path -Verbosity quiet - $dir = ls "$path\vswhere.*" | sort -property Name -descending | select -first 1 + &$nuget install vswhere -OutputDirectory $scriptTemp -Verbosity quiet + $dir = ls "$scriptTemp\vswhere.*" | sort -property Name -descending | select -first 1 $file = ls -path "$dir" -name vswhere.exe -recurse mv "$dir\$file" $vswhere Remove-Directory $dir } # ensure we have semver - $semver = "$path\Semver.dll" + $semver = "$scriptTemp\Semver.dll" if ((test-path $semver) -and ((ls $semver).CreationTime -lt [DateTime]::Now.AddDays(-$cache))) { Remove-File $semver @@ -69,8 +62,8 @@ function Get-UmbracoBuildEnv if (-not (test-path $semver)) { Write-Host "Download Semver..." - &$nuget install semver -OutputDirectory $path -Verbosity quiet - $dir = ls "$path\semver.*" | sort -property Name -descending | select -first 1 + &$nuget install semver -OutputDirectory $scriptTemp -Verbosity quiet + $dir = ls "$scriptTemp\semver.*" | sort -property Name -descending | select -first 1 $file = "$dir\lib\net452\Semver.dll" if (-not (test-path $file)) { @@ -92,24 +85,24 @@ function Get-UmbracoBuildEnv } # ensure we have node - $node = "$path\node-v6.9.1-win-x86" + $node = "$scriptTemp\node-v6.9.1-win-x86" $source = "http://nodejs.org/dist/v6.9.1/node-v6.9.1-win-x86.7z" if (-not (test-path $node)) { Write-Host "Download Node..." - Invoke-WebRequest $source -OutFile "$path\node-v6.9.1-win-x86.7z" - &$sevenZip x "$path\node-v6.9.1-win-x86.7z" -o"$path" -aos > $nul - Remove-File "$path\node-v6.9.1-win-x86.7z" + Invoke-WebRequest $source -OutFile "$scriptTemp\node-v6.9.1-win-x86.7z" + &$sevenZip x "$scriptTemp\node-v6.9.1-win-x86.7z" -o"$scriptTemp" -aos > $nul + Remove-File "$scriptTemp\node-v6.9.1-win-x86.7z" } # note: why? node already brings everything we need! ## ensure we have npm - #$npm = "$path\npm.*" + #$npm = "$scriptTemp\npm.*" #$getNpm = $true #if (test-path $npm) #{ # $getNpm = $false - # $tmpNpm = ls "$path\npm.*" | sort -property Name -descending | select -first 1 + # $tmpNpm = ls "$scriptTemp\npm.*" | sort -property Name -descending | select -first 1 # if ($tmpNpm.CreationTime -lt [DateTime]::Now.AddDays(-$cache)) # { # $getNpm = $true @@ -122,8 +115,8 @@ function Get-UmbracoBuildEnv #if ($getNpm) #{ # Write-Host "Download Npm..." - # &$nuget install npm -OutputDirectory $path -Verbosity quiet - # $npm = ls "$path\npm.*" | sort -property Name -descending | select -first 1 + # &$nuget install npm -OutputDirectory $scriptTemp -Verbosity quiet + # $npm = ls "$scriptTemp\npm.*" | sort -property Name -descending | select -first 1 # $npm.CreationTime = [DateTime]::Now # $npm = $npm.ToString() #} @@ -164,7 +157,8 @@ function Get-UmbracoBuildEnv $vs | add-member -memberType NoteProperty -name MsBuild -value "$msBuild\MsBuild.exe" } - $solutionRoot = Get-FullPath "$PSScriptRoot\..\..\.." + #$solutionRoot = Get-FullPath "$PSScriptRoot\..\..\.." + $solutionRoot = [System.IO.Path]::GetFullPath("$scriptRoot\..") $uenv = new-object -typeName PsObject $uenv | add-member -memberType NoteProperty -name SolutionRoot -value $solutionRoot diff --git a/build/Modules/Umbraco.Build/Umbraco.Build.psm1 b/build/Modules/Umbraco.Build/Umbraco.Build.psm1 index 5cb1028768..2aef35ee39 100644 --- a/build/Modules/Umbraco.Build/Umbraco.Build.psm1 +++ b/build/Modules/Umbraco.Build/Umbraco.Build.psm1 @@ -511,6 +511,13 @@ function Package-NuGet -Properties BuildTmp="$tmp" ` -Version $version.Semver.ToString() ` -Verbosity quiet -outputDirectory $out + + $hook = "$($uenv.SolutionRoot)\build\hooks\Post-Package-NuGet.ps1" + if (Test-Path -Path $hook) + { + . "$hook" + Post-Package-NuGet $uenv $version + } } # @@ -577,15 +584,15 @@ function Build-Umbraco { Prepare-NuGet $uenv } - elseif ($target -eq "restore-nuget") + elseif ($target -eq "Restore-NuGet" -or $target -eq "restore-nuget") { Restore-NuGet $uenv } - elseif ($target -eq "pkg-zip") + elseif ($target -eq "Package-Zip" -eq $target -eq "pkg-zip") { Package-Zip $uenv } - elseif ($target -eq "pkg-nuget") + elseif ($target -eq "Package-NuGet" -eq $target -eq "pkg-nuget") { Package-NuGet $uenv $version }