Catesta.psm1
# This is a locally sourced Imports file for local development. # It can be imported by the psm1 in local development to add script level variables. # It will merged in the build process. This is for local development only. # region script variables $script:resourcePath = "$PSScriptRoot\Resources" <# .EXTERNALHELP Catesta-help.xml #> function New-PowerShellProject { [CmdletBinding(ConfirmImpact = 'Low', SupportsShouldProcess = $true)] param ( [Parameter(Mandatory = $true, HelpMessage = 'CICD Platform Choice')] [ValidateSet('AWS', 'GitHubActions', 'Azure', 'AppVeyor','ModuleOnly')] [string] $CICDChoice, [Parameter(Mandatory = $true, HelpMessage = 'File path where PowerShell Module project will be created')] [string] $DestinationPath, [Parameter(Mandatory = $false, HelpMessage = 'Skip confirmation')] [switch]$Force ) Begin { if (-not $PSBoundParameters.ContainsKey('Verbose')) { $VerbosePreference = $PSCmdlet.SessionState.PSVariable.GetValue('VerbosePreference') } if (-not $PSBoundParameters.ContainsKey('Confirm')) { $ConfirmPreference = $PSCmdlet.SessionState.PSVariable.GetValue('ConfirmPreference') } if (-not $PSBoundParameters.ContainsKey('WhatIf')) { $WhatIfPreference = $PSCmdlet.SessionState.PSVariable.GetValue('WhatIfPreference') } Write-Verbose -Message ('[{0}] Confirm={1} ConfirmPreference={2} WhatIf={3} WhatIfPreference={4}' -f $MyInvocation.MyCommand, $Confirm, $ConfirmPreference, $WhatIf, $WhatIfPreference) }#begin Process { # -Confirm --> $ConfirmPreference = 'Low' # ShouldProcess intercepts WhatIf* --> no need to pass it on if ($Force -or $PSCmdlet.ShouldProcess("ShouldProcess?")) { Write-Verbose -Message ('[{0}] Reached command' -f $MyInvocation.MyCommand) $ConfirmPreference = 'None' Write-Verbose -Message 'Importing Plaster...' try { Import-Module -Name Plaster -ErrorAction Stop Write-Verbose 'Plaster Imported.' } catch { throw $_ } Write-Verbose -Message 'Sourcing correct template...' switch ($CICDChoice) { 'AWS' { Write-Verbose -Message 'AWS Template Selected.' $path = '\AWS' }#aws 'GitHubActions' { Write-Verbose -Message 'GitHub Actions Template Selected.' $path = '\GitHubActions' }#githubactions 'Azure' { Write-Verbose -Message 'Azure Pipelines Template Selected.' $path = '\Azure' }#githubactions 'AppVeyor' { Write-Verbose -Message 'AppVeyor Template Selected.' $path = '\AppVeyor' }#appveyor 'ModuleOnly' { Write-Verbose -Message 'Module Only Template Selected.' $path = '\Vanilla' }#moduleonly }#switch Write-Verbose -Message 'Deploying template...' try { $results = Invoke-Plaster -TemplatePath "$script:resourcePath\$path" -DestinationPath $DestinationPath -PassThru -ErrorAction Stop Write-Verbose -Message 'Template Deployed.' } catch { Write-Error $_ $results = [PSCustomObject]@{ Success = $false } } }#if_Should }#process End { return $results }#end }#New-PowerShellProject |