| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- #**************************************************************************#
- #** QUADARAX DEPLOYMENT SCRIPTS **#
- #** File: 002_library.ps1 **#
- #** Description: PowerShell script library of elementary functions to **#
- #** work with QDS **#
- #** Version: 1.0. **#
- #** Updated: 29.7.2019 **#
- #**************************************************************************#
- # Rebuilds solution file, may calls CleanSolution
- Function RebuildSolution
- {
- param(
- # Solution file name with full path
- [string] $solutionFileName,
- # Build configuration Debug / Release
- [string] $configurationName = $buildCfgDebug,
- # Defines alternative output directory. If not defined, use default output locations depends on configuration
- [string] $alternativeOutputDirectory,
- # Defines if Clean will be called before build
- [bool] $cleanBeforeBuild = $false,
- # Defines if only show calling commands instead of executes them (just for debugging)
- [bool] $simulate = $false
- )
- $fileExists = Test-Path($solutionFileName)
- if ($fileExists -eq $false){
- Write-Error("Solution file '{0}' doesn't exists." -f $solutionFileName)
- Break
- }
- if (!$alternativeOutputDirectory){
- $alternativeOutputDirectory = ""
- }
- else{
- $alternativeOutputDirectory = " /p:OutputPath='{0}' " -f $alternativeOutputDirectory
- }
- Write-Host("**** BEGIN *** BUILDS SOLUTION/PROJECT : {0} ****" -f $solutionFileName) -ForegroundColor Yellow
- if ($cleanBeforeBuild -eq $true){
- CleanSolution $solutionFileName $configurationName $simulate
- }
- if ($simulate -eq $true){
- Write-Host "msbuild $solutionFileName /t:$buildTrgRebuild /p:VisualStudioVersion=15.0 /p:Configuration=$configurationName /m /clp:Summary /clp:ShowTimestamp $alternativeOutputDirectory" -ForegroundColor Cyan
- } else{
- msbuild $solutionFileName /t:$buildTrgRebuild /p:VisualStudioVersion=15.0 /p:Configuration=$configurationName /m /clp:Summary /clp:ShowTimestamp $alternativeOutputDirectory
- }
- Write-Host("**** END *** BUILDS SOLUTION/PROJECT : {0} ****" -f $solutionFileName) -ForegroundColor Yellow
- }
- # Cleans solution file
- Function CleanSolution
- {
- param(
- # Solution file name with full path
- [string] $solutionFileName,
- # Build configuration Debug / Release
- [string] $configurationName = $buildCfgDebug,
- # Defines if only show calling commands instead of executes them (just for debugging)
- [bool] $simulate = $false
- )
- $fileExists = Test-Path($solutionFileName)
- if ($fileExists -eq $false){
- Write-Error("Solution file '{0}' doesn't exists." -f $solutionFileName)
- Break
- }
- Write-Host("***** BEGIN *** CLEANS SOLUTION/PROJECT : {0} *****" -f $solutionFileName) -ForegroundColor DarkYellow
- if ($simulate -eq $true){
- Write-Host "msbuild $solutionFileName /t:$buildTrgClean /p:VisualStudioVersion=15.0 /p:Configuration=$configurationName /m" -ForegroundColor Cyan
- } else{
- msbuild $solutionFileName /t:$buildTrgClean /p:VisualStudioVersion=15.0 /p:Configuration=$configurationName /m
- }
- Write-Host("***** END *** CLEANS SOLUTION/PROJECT : {0} *****" -f $solutionFileName) -ForegroundColor DarkYellow
- #/p:SolutionDir=$location /m
- }
- # Publish solution file, may calls CleanSolution
- Function PublishSolution
- {
- param(
- # Solution file name with full path
- [string] $solutionFileName,
- # Build configuration Debug / Release
- [string] $configurationName = $buildCfgDebug,
- # Defines alternative output directory. If not defined, use default output locations depends on configuration
- [string] $alternativeOutputDirectory,
- # Defines if Clean will be called before build
- [bool] $cleanBeforeBuild = $false,
- # Defines if only show calling commands instead of executes them (just for debugging)
- [bool] $simulate = $false
- )
- $fileExists = Test-Path($solutionFileName)
- if ($fileExists -eq $false){
- Write-Error("Solution file '{0}' doesn't exists." -f $solutionFileName)
- Break
- }
- if (!$alternativeOutputDirectory){
- $alternativeOutputDirectory = ""
- }
- else{
- $alternativeOutputDirectory = " /p:PublishDestination='{0}'" -f $alternativeOutputDirectory
- }
- Write-Host("**** BEGIN *** BUILDS SOLUTION/PROJECT : {0} ****" -f $solutionFileName) -ForegroundColor Yellow
- if ($cleanBeforeBuild -eq $true){
- CleanSolution $solutionFileName $configurationName $simulate
- }
- if ($simulate -eq $true){
- Write-Host "msbuild $solutionFileName /t:$buildTrgPublish /p:VisualStudioVersion=15.0 /p:Configuration=$configurationName /m /clp:Summary /clp:ShowTimestamp $alternativeOutputDirectory" -ForegroundColor Cyan
- } else{
- msbuild $solutionFileName /t:$buildTrgPublish /p:VisualStudioVersion=15.0 /p:Configuration=$configurationName /m /clp:Summary /clp:ShowTimestamp $alternativeOutputDirectory
- }
- Write-Host("**** END *** BUILDS SOLUTION/PROJECT : {0} ****" -f $solutionFileName) -ForegroundColor Yellow
- }
- # Returns list of project from solution file. Returns objects with properties: Name, File, Guid, Directory
- Function GetProjectsFromSolution
- {
- param(
- # Solution file name with full path
- [string] $solutionFileName
- )
- $fileExists = Test-Path($solutionFileName)
- if ($fileExists -eq $false){
- Write-Error("Solution file '{0}' doesn't exists." -f $solutionFileName)
- Break
- }
- return Get-Content $solutionFileName |
- Select-String 'Project\(' |
- ForEach-Object {
- $projectParts = $_ -Split '[,=]' | ForEach-Object { $_.Trim('[ "{}]') };
- New-Object PSObject -Property @{
- Name = $projectParts[1];
- File = $projectParts[2];
- Guid = $projectParts[3];
- Directory = Split-Path -Path "$projectDir\$($projectParts[2])" -Parent
- }
- }
- }
- Write-Host "QDS library was loaded." -ForegroundColor DarkGray
|