mirror of
https://github.com/benclaussen/NetboxPS.git
synced 2025-12-13 01:42:28 +00:00
Update deploy.ps1 with new logic
This commit is contained in:
parent
cd0d6383e6
commit
cad361c1b4
1 changed files with 48 additions and 23 deletions
71
deploy.ps1
71
deploy.ps1
|
|
@ -17,6 +17,10 @@
|
|||
.PARAMETER NewVersion
|
||||
Override the new version with this version
|
||||
|
||||
.PARAMETER Environment
|
||||
A description of the Environment parameter.
|
||||
.PARAMETER ResetCurrentEnvironment
|
||||
A description of the ResetCurrentEnvironment parameter.
|
||||
.EXAMPLE
|
||||
Use all defaults and concatenate all files
|
||||
|
||||
|
|
@ -48,13 +52,17 @@ param
|
|||
[version]$VersionIncrease = "0.0.1",
|
||||
|
||||
[Parameter(ParameterSetName = 'SetVersion')]
|
||||
[version]$NewVersion
|
||||
[version]$NewVersion,
|
||||
[ValidateSet('dev', 'development', 'prod', 'production', IgnoreCase = $true)]
|
||||
[string]$Environment = 'development',
|
||||
[switch]$ResetCurrentEnvironment
|
||||
)
|
||||
|
||||
Import-Module "Microsoft.PowerShell.Utility" -ErrorAction Stop
|
||||
|
||||
Write-Host "Beginning deployment" -ForegroundColor Green
|
||||
|
||||
Write-Host "Importing required modules" -ForegroundColor Green
|
||||
Import-Module "Microsoft.PowerShell.Utility" -ErrorAction Stop
|
||||
$ModuleName = 'NetboxPS'
|
||||
$ConcatenatedFilePath = "$PSScriptRoot\concatenated.ps1"
|
||||
$FunctionPath = "$PSScriptRoot\Functions"
|
||||
|
|
@ -62,17 +70,17 @@ $OutputDirectory = "$PSScriptRoot\$ModuleName"
|
|||
$PSD1OutputPath = "$OutputDirectory\$ModuleName.psd1"
|
||||
$PSM1OutputPath = "$OutputDirectory\$ModuleName.psm1"
|
||||
|
||||
$PS1Files = Get-ChildItem $FunctionPath -Filter "*.ps1" -Recurse | Sort-Object Name
|
||||
$PS1FunctionFiles = Get-ChildItem $FunctionPath -Filter "*.ps1" -Recurse | Sort-Object Name
|
||||
|
||||
"" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8
|
||||
|
||||
$Counter = 0
|
||||
Write-Host "Concatenating [$($PS1Files.Count)] PS1 files from $FunctionPath"
|
||||
foreach ($File in $PS1Files) {
|
||||
Write-Host "Concatenating [$($PS1FunctionFiles.Count)] PS1 files from $FunctionPath"
|
||||
foreach ($File in $PS1FunctionFiles) {
|
||||
$Counter++
|
||||
|
||||
try {
|
||||
Write-Host (" Adding file {0:D2}/{1:D2}: $($File.Name)" -f $Counter, $PS1Files.Count)
|
||||
Write-Host (" Adding file {0:D2}/{1:D2}: $($File.Name)" -f $Counter, $PS1FunctionFiles.Count)
|
||||
|
||||
"`r`n#region File $($File.Name)`r`n" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 -Append -ErrorAction Stop
|
||||
|
||||
|
|
@ -87,15 +95,33 @@ foreach ($File in $PS1Files) {
|
|||
|
||||
"" | Out-File -FilePath $ConcatenatedFilePath -Encoding utf8 -Append
|
||||
|
||||
if (-not (Test-Path $OutputDirectory)) {
|
||||
try {
|
||||
Write-Warning "Creating path [$OutputDirectory]"
|
||||
$null = New-Item -Path $OutputDirectory -ItemType Directory -Force
|
||||
} catch {
|
||||
throw "Failed to create output directory [$OutputDirectory]: $($_.Exception.Message)"
|
||||
}
|
||||
}
|
||||
Write-Host " Adding psm1"
|
||||
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
|
||||
|
||||
$UpdateModuleManifestSplat = @{
|
||||
Path = "$PSScriptRoot\$ModuleName.psd1"
|
||||
ErrorAction = 'Stop'
|
||||
}
|
||||
|
||||
if ($Environment -ilike 'dev*') {
|
||||
Write-Host "Exporting all functions for development"
|
||||
$UpdateModuleManifestSplat['FunctionsToExport'] = $PS1FunctionFiles.BaseName
|
||||
} else {
|
||||
$UpdateModuleManifestSplat['FunctionsToExport'] = ($PS1FunctionFiles.BaseName | Where-Object { $_ -like '*-*' })
|
||||
}
|
||||
Write-Host "Comparing versions"
|
||||
switch ($PSCmdlet.ParameterSetName) {
|
||||
"SkipVersion" {
|
||||
# Dont do anything with the PSD
|
||||
|
|
@ -108,35 +134,26 @@ switch ($PSCmdlet.ParameterSetName) {
|
|||
# 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]"
|
||||
Write-Host " Updating version 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
|
||||
$UpdateModuleManifestSplat['ModuleVersion'] = $NewVersion
|
||||
|
||||
break
|
||||
}
|
||||
|
||||
"SetVersion" {
|
||||
Write-Host " Updating version in PSD1 from [$CurrentVersion] to [$NewVersion]"
|
||||
Write-Host " Updating version 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
|
||||
$UpdateModuleManifestSplat['ModuleVersion'] = $NewVersion
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (-not (Test-Path $OutputDirectory)) {
|
||||
try {
|
||||
Write-Warning "Creating path [$OutputDirectory]"
|
||||
$null = New-Item -Path $OutputDirectory -ItemType Directory -Force
|
||||
} catch {
|
||||
throw "Failed to create directory [$OutputDirectory]: $($_.Exception.Message)"
|
||||
}
|
||||
}
|
||||
Write-Host "Updating Module Manifest"
|
||||
Update-ModuleManifest @UpdateModuleManifestSplat
|
||||
|
||||
Write-Host " Copying psd1"
|
||||
Copy-Item -Path "$PSScriptRoot\$ModuleName.psd1" -Destination $PSD1OutputPath -Force
|
||||
|
|
@ -144,4 +161,12 @@ Copy-Item -Path "$PSScriptRoot\$ModuleName.psd1" -Destination $PSD1OutputPath -F
|
|||
Write-Host " Copying psm1"
|
||||
Copy-Item -Path $ConcatenatedFilePath -Destination $PSM1OutputPath -Force
|
||||
|
||||
Write-Host "Deployment complete" -ForegroundColor Green
|
||||
Write-Host "Deployment complete" -ForegroundColor Green
|
||||
if ($ResetCurrentEnvironment) {
|
||||
Write-Warning "Running commands to reset current environment"
|
||||
Write-Host " Reimporting module"
|
||||
Import-Module $PSM1OutputPath, $PSD1OutputPath -Force -ErrorAction Stop
|
||||
Write-Host " Connecting to VivantioAPI"
|
||||
Connect-VivantioAPI -Credential $VivantioAPICredential -ODataURI 'https://neonet.vivantio.com/odata/' -RPCURI 'https://webservices-na01.vivantio.com/api/' -ErrorAction Stop
|
||||
Write-Host "Reset complete" -ForegroundColor Green
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue