1+ [CmdletBinding ()]
2+ param (
3+ [switch ]
4+ $Local ,
5+
6+ [ValidateSet (' Desktop' , ' Core' )]
7+ [string ]
8+ $PSVersion
9+ )
10+
11+ # region Launch in new cponsole
12+ if (-not $Local ) {
13+ $application = (Get-Process - id $PID ).Path
14+ if ($PSVersion -and $PSVersionTable.Edition -ne $PSVersion ) {
15+ $application = ' pwsh.exe'
16+ if ($PSVersion -eq ' Desktop' ) { $application = ' powershell.exe' }
17+ }
18+
19+ Start-Process $application - ArgumentList @ (' -NoExit' , ' -NoProfile' , ' -File' , " $PSScriptRoot \launch.ps1" , ' -Local' )
20+ return
21+ }
22+ # endregion Launch in new cponsole
23+
24+ $ErrorActionPreference = ' Stop'
25+ trap {
26+ Write-Warning " Script failed: $_ "
27+ throw $_
28+ }
29+
30+ # region Functions
31+ function New-TemporaryPath {
32+ [OutputType ([string ])]
33+ [CmdletBinding ()]
34+ param (
35+ [Parameter (Mandatory = $true )]
36+ [string ]
37+ $Prefix
38+ )
39+
40+ Write-Host " Creating new temporary path: $Prefix "
41+
42+ # Remove Previous Temporary Paths
43+ Remove-Item - Path " $env: Temp \$Prefix *" - Force - Recurse - ErrorAction SilentlyContinue
44+
45+ # Create New Temporary Path
46+ $item = New-Item - Path $env: TEMP - Name " $ ( $Prefix ) _$ ( Get-Random ) " - ItemType Directory
47+ $item.FullName
48+ }
49+
50+ function Build-Template {
51+ [CmdletBinding ()]
52+ param (
53+ [Parameter (Mandatory = $true )]
54+ [string ]
55+ $RootPath ,
56+
57+ [Parameter (Mandatory = $true )]
58+ [string ]
59+ $ProjectPath
60+ )
61+
62+ Write-Host " Building Templates from Source"
63+ $buildScriptPath = Join-Path - Path $ProjectPath - ChildPath " templates\build.ps1"
64+ & $buildScriptPath - Path $RootPath
65+
66+ Set-PSFConfig - FullName ' PSModuleDevelopment.Template.Store.PSModuleDevelopment' - Value " $RootPath \output"
67+ }
68+
69+ function Import-PsmdModule {
70+ [CmdletBinding ()]
71+ param (
72+ [Parameter (Mandatory = $true )]
73+ [string ]
74+ $ProjectPath
75+ )
76+
77+ Write-Host " Importing PSModuleDevelopment from source code"
78+ Import-Module " $ProjectPath \PSModuleDevelopment\PSModuleDevelopment.psd1" - Global
79+
80+ # Does not work during initial start
81+ # [Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory("ipmo '$ProjectPath\PSModuleDevelopment\PSModuleDevelopment.psd1'")
82+ }
83+ # endregion Functions
84+
85+ $projectRoot = Resolve-Path - Path " $PSScriptRoot \.."
86+ $templateRoot = New-TemporaryPath - Prefix PsmdTemplate
87+ # Build-PsmdModule -ProjectPath $projectRoot
88+ Import-PsmdModule - ProjectPath $projectRoot
89+ Build-Template - RootPath $templateRoot - ProjectPath $projectRoot
0 commit comments