functions/empty-vnext-publish.ps1
[cmdletbinding(SupportsShouldProcess=$true)] param($publishProperties, $packOutput, $nugetUrl) # to learn more about this file visit http://go.microsoft.com/fwlink/?LinkId=524327 $publishModuleVersion = '1.0.1' function Get-VisualStudio2015InstallPath{ [cmdletbinding()] param() process{ $keysToCheck = @('hklm:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0', 'hklm:\SOFTWARE\Microsoft\VisualStudio\14.0', 'hklm:\SOFTWARE\Wow6432Node\Microsoft\VWDExpress\14.0', 'hklm:\SOFTWARE\Microsoft\VWDExpress\14.0' ) [string]$vsInstallPath=$null foreach($keyToCheck in $keysToCheck){ if(Test-Path $keyToCheck){ $vsInstallPath = (Get-itemproperty $keyToCheck -Name InstallDir | select -ExpandProperty InstallDir) } if($vsInstallPath){ break; } } $vsInstallPath } } $vsInstallPath = (Get-VisualStudio2015InstallPath) $VerbosePreference = "Continue" Start-Transcript -path "c:\temp\ps-publish.log" -append write-verbose "PSScriptRoot=$PSScriptRoot" write-verbose "workingdir=$((get-item .).FullName)" $publishModulePath = $null $scriptsDir = $null $scriptDirs = @("scripts", "scripts-lib", "submodules/scripts-lib") for($dir = (gi .).FullName; $dir = split-path $dir -parent; $dir -ne $null) { foreach($scriptsDir in $scriptDirs) { $testDir = "$dir\$scriptsDir" write-verbose "testing dir for scripts: $testDir" if (Test-Path "$testDir" ) { $testFile = Join-Path $testDir 'publish-module.psm1' if (Test-Path $testFile) { write-verbose "found scripts dir at $(get-item $testDir)" $publishModulePath = (get-item $testDir).FullName break } } } } if ($publishModulePath -eq $null) { ipmo pubxml -ErrorAction Ignore if ((gmo pubxml -ErrorAction Ignore) -ne $null) { $testDir = (gmo pubxml).path $testDir = split-path -Parent $testDir $testDir = join-path $testDir "functions" write-verbose "testing dir for scripts: $testDir" $testfile = join-path $testDir "publish-module.psm1" if (Test-Path $testFile) { write-verbose "found scripts dir at $(get-item $testDir)" $publishModulePath = (get-item $testDir).FullName } } } if ($publishModulePath -eq $null) { write-error "publish module not found in any of paths: $($scriptDirs | % { (get-item $_).FullName })" } write-verbose "searching for publishmodule in: $publishModulePath" #$publishModulePath = "{0}Extensions\Microsoft\Web Tools\Publish\Scripts\{1}\" -f $vsInstallPath,'1.0.1' #if(!(Test-Path $publishModulePath)){ # $publishModulePath = "{0}VWDExpressExtensions\Microsoft\Web Tools\Publish\Scripts\{1}\" -f $vsInstallPath,'1.0.1' #} $defaultPublishSettings = New-Object psobject -Property @{ LocalInstallDir = ($publishModulePath) } function Enable-PackageDownloader{ [cmdletbinding()] param( $toolsDir = "$env:LOCALAPPDATA\Microsoft\Web Tools\Publish\package-downloader-$publishModuleVersion\", $pkgDownloaderDownloadUrl = 'http://go.microsoft.com/fwlink/?LinkId=524325') # package-downloader.psm1 process{ if(get-module package-downloader){ remove-module package-downloader | Out-Null } if(!(get-module package-downloader)){ if(!(Test-Path $toolsDir)){ New-Item -Path $toolsDir -ItemType Directory -WhatIf:$false } $expectedPath = (Join-Path ($toolsDir) 'package-downloader.psm1') if(!(Test-Path $expectedPath)){ 'Downloading [{0}] to [{1}]' -f $pkgDownloaderDownloadUrl,$expectedPath | Write-Verbose (New-Object System.Net.WebClient).DownloadFile($pkgDownloaderDownloadUrl, $expectedPath) } if(!$expectedPath){throw ('Unable to download package-downloader.psm1')} 'importing module [{0}]' -f $expectedPath | Write-Output Import-Module $expectedPath -DisableNameChecking -Force } } } function Enable-PublishModule{ [cmdletbinding()] param() process{ if(get-module publish-module){ remove-module publish-module | Out-Null } if(!(get-module publish-module)){ $localpublishmodulepath = Join-Path $defaultPublishSettings.LocalInstallDir 'publish-module.psm1' if(Test-Path $localpublishmodulepath){ 'importing module [publish-module="{0}"] from local install dir' -f $localpublishmodulepath | Write-Verbose Import-Module $localpublishmodulepath -DisableNameChecking -Force $true } else { Write-Verbose "publish-module.psm1 not found in $localpublishmodulepath" } } } } try{ if (!(Enable-PublishModule)){ Enable-PackageDownloader Enable-NuGetModule -name 'publish-module' -version $publishModuleVersion -nugetUrl $nugetUrl } 'Calling Publish-AspNet' | Write-Verbose # call Publish-AspNet to perform the publish operation $publishProperties | Out-String | Write-Verbose Publish-AspNet -publishProperties $publishProperties -packOutput $packOutput } catch{ "An error occured during publish.`n{0}" -f $_.Exception.Message | Write-Error } finally { # Stop-Transcript } |