1- function Build -Pipescript {
1+ function Export -Pipescript {
22 <#
33 . Synopsis
4- Builds PipeScript Files
4+ Builds and Exports using PipeScript
55 . Description
6- Builds PipeScript Files .
6+ Builds and Exports a path, using PipeScript .
77
88 Any Source Generator Files Discovered by PipeScript will be run, which will convert them into source code.
9+ . EXAMPLE
10+ Export-PipeScript
11+ . EXAMPLE
12+ Build-PipeScript
913 #>
10- [Alias (' bps' )]
14+ [Alias (' Build-PipeScript ' , ' bps' , ' eps ' )]
1115 param (
1216 # One or more input paths. If no -InputPath is provided, will build all scripts beneath the current directory.
1317 [Parameter (ValueFromPipelineByPropertyName )]
@@ -20,29 +24,42 @@ function Build-Pipescript {
2024 $filesToBuild =
2125 @ (if (-not $InputPath ) {
2226 Get-PipeScript - PipeScriptPath $pwd |
23- Where-Object PipeScriptType -In SourceGenerator
27+ Where-Object PipeScriptType -In Template, BuildScript |
28+ Sort-Object PipeScriptType, Source
2429 } else {
2530 foreach ($inPath in $InputPath ) {
2631 Get-PipeScript - PipeScriptPath $inPath |
27- Where-Object PipeScriptType -In SourceGenerator
32+ Where-Object PipeScriptType -In Template, BuildScript |
33+ Sort-Object PipeScriptType, Source
2834 }
2935 })
3036
31-
3237 $buildStarted = [DateTime ]::Now
38+ $alreadyBuilt = [Ordered ]@ {}
3339 $filesToBuildCount , $filesToBuildTotal , $filesToBuildID = 0 , $filesToBuild.Length , $ (Get-Random )
3440 foreach ($buildFile in $filesToBuild ) {
35- $ThisBuildStartedAt = [DateTime ]::Now
41+
42+ $ThisBuildStartedAt = [DateTime ]::Now
43+
3644 Write-Progress " Building PipeScripts [$FilesToBuildCount / $filesToBuildTotal ]" " $ ( $buildFile.Source ) " - PercentComplete $ (
3745 $FilesToBuildCount ++
3846 $FilesToBuildCount * 100 / $filesToBuildTotal
3947 ) - id $filesToBuildID
4048
49+ if ($alreadyBuilt [$buildFile.Source ]) { continue }
50+
51+ $buildFileTemplate = $buildFile.Template
52+ if ($buildFileTemplate -and $buildFile.PipeScriptType -ne ' Template' ) {
53+ Invoke-PipeScript $buildFileTemplate.Source
54+ $alreadyBuilt [$buildFileTemplate.Source ] = $true
55+ }
56+
4157 $EventsFromThisBuild = Get-Event |
4258 Where-Object TimeGenerated -gt $ThisBuildStartedAt |
4359 Where-Object SourceIdentifier -Like ' PipeScript.*'
4460
4561 Invoke-PipeScript $buildFile.Source
62+ $alreadyBuilt [$buildFile.Source ] = $true
4663 }
4764
4865
0 commit comments