diff --git a/deploy.ps1 b/deploy.ps1 index 8316249..3d79e2e 100644 --- a/deploy.ps1 +++ b/deploy.ps1 @@ -1,45 +1,118 @@ -<# - .NOTES - =========================================================================== - Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.174 - Created on: 4/9/2020 09:43 - Created by: Claussen - Organization: NEOnet - Filename: deploy.ps1 - =========================================================================== - .DESCRIPTION - A description of the file. +<# + .SYNOPSIS + A brief description of the Invoke-deploy_ps1 file. + + .DESCRIPTION + A description of the file. + + .PARAMETER SkipVersion + A description of the SkipVersion parameter. + + .PARAMETER VersionIncrease + A description of the VersionIncrease parameter. + + .PARAMETER NewVersion + A description of the NewVersion parameter. + + .NOTES + =========================================================================== + Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.174 + Created on: 4/9/2020 09:43 + Created by: Claussen + Organization: NEOnet + Filename: deploy.ps1 + =========================================================================== #> - - +[CmdletBinding(DefaultParameterSetName = 'IncreaseVersion')] +param +( + [Parameter(ParameterSetName = 'SkipVersion')] + [switch]$SkipVersion, + + [Parameter(ParameterSetName = 'IncreaseVersion')] + [version]$VersionIncrease = "0.0.1", + + [Parameter(ParameterSetName = 'SetVersion')] + [version]$NewVersion +) Write-Host "Beginning deployment" -ForegroundColor Green +$ModuleName = 'NetboxPS' +$ConcatenatedFilePath = "$PSScriptRoot\concatenated.ps1" +$PSD1OutputPath = "$PSScriptRoot\dist\$ModuleName.psd1" +$PSM1OutputPath = "$PSScriptRoot\dist\$ModuleName.psm1" + $PS1Files = Get-ChildItem "$PSScriptRoot\Functions" -Filter "*.ps1" -Recurse | Sort-Object Name -"" | Out-File -FilePath .\concatenated.ps1 -Encoding utf8 +"" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 $Counter = 0 +Write-Host "Concatenating [$($PS1Files.Count)] PS1 files from $PSScriptRoot\Functions" foreach ($File in $PS1Files) { $Counter++ - Write-Host (" Adding file {0:D2}/{1:D2}: $($File.Name)" -f $Counter, $PS1Files.Count) - "`r`n#region File $($File.Name)`r`n" | Out-File -FilePath .\concatenated.ps1 -Encoding utf8 -Append - - Get-Content $File.FullName -Encoding UTF8 | Out-File -FilePath .\concatenated.ps1 -Encoding utf8 -Append - - "`r`n#endregion" | Out-File -FilePath .\concatenated.ps1 -Encoding utf8 -Append + try { + Write-Host (" Adding file {0:D2}/{1:D2}: $($File.Name)" -f $Counter, $PS1Files.Count) + + "`r`n#region File $($File.Name)`r`n" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 -Append + + Get-Content $File.FullName -Encoding UTF8 | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 -Append + + "`r`n#endregion" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 -Append + } catch { + Write-Host "FAILED TO WRITE CONCATENATED FILE: $($_.Exception.Message): $($_.TargetObject)" -ForegroundColor Red + return + } } -"" | Out-File -FilePath .\concatenated.ps1 -Encoding utf8 -Append +"" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 -Append Write-Host " Adding psm1" -Get-Content .\NetboxPS.psm1 | Out-File -FilePath .\concatenated.ps1 -Encoding UTF8 -Append +Get-Content "$PSScriptRoot\$ModuleName.psm1" | Out-File -FilePath $ConcatenatedFilePath -Encoding UTF8 -Append + +$PSDManifest = Import-PowerShellDataFile -Path "$PSScriptRoot\$ModuleName.psd1" +# Get the version from the PSD1 +#[version]$CurrentVersion = [regex]::matches($PSDContent, "\s*ModuleVersion\s=\s'(\d*.\d*.\d*)'\s*").groups[1].value +[version]$CurrentVersion = $PSDManifest.ModuleVersion + + +switch ($PSCmdlet.ParameterSetName) { + "SkipVersion" { + # Dont do anything with the PSD + Write-Host " Skipping version update, maintaining version [$CurrentVersion]" + + break + } + + "IncreaseVersion" { + # Calculate the new version + [version]$NewVersion = "{0}.{1}.{2}" -f ($CurrentVersion.Major + $VersionIncrease.Major), ($CurrentVersion.Minor + $VersionIncrease.Minor), ($CurrentVersion.Build + $VersionIncrease.Build) + + Write-Host " Updating version in PSD1 from [$CurrentVersion] to [$NewVersion]" + + # Replace the version number in the content + #$PSDContent -replace $CurrentVersion, $NewVersion | Out-File $PSScriptRoot\$ModuleName.psd1 -Encoding UTF8 + Update-ModuleManifest -Path "$PSScriptRoot\$ModuleName.psd1" -ModuleVersion $NewVersion + + break + } + + "SetVersion" { + Write-Host " Updating version in PSD1 from [$CurrentVersion] to [$NewVersion]" + + # Replace the version number in the content + #$PSDContent -replace $CurrentVersion, $NewVersion | Out-File $PSScriptRoot\$ModuleName.psd1 -Encoding UTF8 + Update-ModuleManifest -Path "$PSScriptRoot\$ModuleName.psd1" -ModuleVersion $NewVersion + + break + } +} Write-Host " Copying psd1" -Copy-Item -Path .\NetboxPS.psd1 -Destination .\dist\NetboxPS.psd1 -Force +Copy-Item -Path "$PSScriptRoot\$ModuleName.psd1" -Destination $PSD1OutputPath -Force Write-Host " Copying psm1" -Copy-Item -Path .\concatenated.ps1 -Destination .\dist\NetboxPS.psm1 -Force +Copy-Item -Path $ConcatenatedFilePath -Destination $PSM1OutputPath -Force Write-Host "Deployment complete" -ForegroundColor Green \ No newline at end of file