Skip to content

Commit d5facb0

Browse files
committed
Seperated the templating from writing to the filesystem
1 parent f07d63c commit d5facb0

File tree

1 file changed

+22
-71
lines changed

1 file changed

+22
-71
lines changed

PSModuleDevelopment/functions/templating/Invoke-PSMDTemplate.ps1

Lines changed: 22 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -222,15 +222,14 @@
222222
}
223223
}
224224
#endregion Scripts
225-
225+
$createdTemplateItems=@()
226226
switch ($templateData.Type.ToString()) {
227227
#region File
228228
"File" {
229229
foreach ($child in $templateData.Children) {
230-
$createdTemplateItems = New-TemplateItem -Item $child -Path $OutPath -Encoding $Encoding -ParameterFlat $Parameters -ParameterScript $scriptParameters -Raw $Raw
231-
Write-PSFMessage "`$createdTemplateItems=$($createdTemplateItems|convertto-json)"
232-
#Todo: Parameter umstellen
233-
Write-TemplateResults -TemplateResult $createdTemplateItems -Encoding $Encoding
230+
$createdTemplateItems += New-TemplateItem -Item $child -Path $OutPath -ParameterFlat $Parameters -ParameterScript $scriptParameters -Raw $Raw
231+
# Write-PSFMessage "`$createdTemplateItems=$($createdTemplateItems|convertto-json)"
232+
# Write-TemplateResults -TemplateResult $createdTemplateItems -Encoding $Encoding
234233
}
235234
if ($Raw -and $templateData.Scripts.Values) {
236235
$templateData.Scripts.Values | Export-Clixml -Path (Join-Path $OutPath "_PSMD_ParameterScripts.xml")
@@ -258,10 +257,9 @@
258257
#endregion Resolve output folder
259258

260259
foreach ($child in $templateData.Children) {
261-
$createdTemplateItems = New-TemplateItem -Item $child -Path $newFolder.FullName -Encoding $Encoding -ParameterFlat $Parameters -ParameterScript $scriptParameters -Raw $Raw
262-
Write-PSFMessage "`$createdTemplateItems=$($createdTemplateItems|convertto-json)"
263-
#Todo: Parameter umstellen
264-
Write-TemplateResults -TemplateResult $createdTemplateItems -Encoding $Encoding
260+
$createdTemplateItems += New-TemplateItem -Item $child -Path $newFolder.FullName -ParameterFlat $Parameters -ParameterScript $scriptParameters -Raw $Raw
261+
# Write-PSFMessage "`$createdTemplateItems=$($createdTemplateItems|convertto-json)"
262+
# Write-TemplateResults -TemplateResult $createdTemplateItems -Encoding $Encoding
265263
}
266264

267265
#region Write Config File (Raw)
@@ -293,12 +291,22 @@
293291
}
294292

295293
$configFile = Join-Path $newFolder.FullName "PSMDTemplate.ps1"
296-
Set-Content -Path $configFile -Value $optionsTemplate -Encoding ([PSFEncoding]'utf-8').Encoding
294+
$createdTemplateItems += [TemplateResult]@{
295+
Filename = "PSMDTemplate.ps1"
296+
Path = $newFolder.FullName
297+
FullPath = (Join-Path $newFolder.FullName "PSMDTemplate.ps1")
298+
Content = $optionsTemplate
299+
}
300+
# Set-Content -Path $configFile -Value $optionsTemplate -Encoding ([PSFEncoding]'utf-8').Encoding
297301
}
298302
#endregion Write Config File (Raw)
299303
}
300304
#endregion Project
301305
}
306+
If($GenerateObjects){
307+
return $createdTemplateItems
308+
}
309+
Write-TemplateResults -TemplateResult $createdTemplateItems -Encoding $Encoding
302310
}
303311

304312
function New-TemplateItem {
@@ -311,9 +319,6 @@
311319
[string]
312320
$Path,
313321

314-
[PSFEncoding]
315-
$Encoding,
316-
317322
[hashtable]
318323
$ParameterFlat,
319324

@@ -382,11 +387,11 @@
382387
$folderName = $folderName -replace "$($identifier)!$([regex]::Escape($param))!$($identifier)", $ParameterScript[$param]
383388
}
384389
}
385-
$folder = Join-Path -Path (get-item $Path).FullName -ChildPath $folderName
390+
$folder = Join-Path -Path $Path -ChildPath $folderName
386391
# $folder = New-Item -Path $Path -Name $folderName -ItemType Directory
387392
$createdTemplateItems = @()
388393
foreach ($child in $Item.Children) {
389-
$createdTemplateItems += New-TemplateItem -Item $child -Path $folder -Encoding $Encoding -ParameterFlat $ParameterFlat -ParameterScript $ParameterScript -Raw $Raw
394+
$createdTemplateItems += New-TemplateItem -Item $child -Path $folder -ParameterFlat $ParameterFlat -ParameterScript $ParameterScript -Raw $Raw
390395
}
391396
return $createdTemplateItems
392397
}
@@ -404,10 +409,10 @@
404409
)
405410
foreach ($item in $TemplateResult) {
406411
Write-PSFMessage -Level Verbose -Message "Creating file: $($Item.FullPath)" -FunctionName Invoke-PSMDTemplate -ModuleName PSModuleDevelopment -Tag 'create', 'template'
407-
Write-PSFMessage -Level Verbose -Message "Creating file: $($Item |convertto-json)" -FunctionName Invoke-PSMDTemplate -ModuleName PSModuleDevelopment -Tag 'create', 'template'
412+
# Write-PSFMessage -Level Verbose -Message "Creating file: $($Item |convertto-json)" -FunctionName Invoke-PSMDTemplate -ModuleName PSModuleDevelopment -Tag 'create', 'template'
408413
if (-not (Test-Path $Item.Path)) {
409414
Write-PSFMessage -Level Verbose -Message "Creating Folder $($Item.Path)"
410-
New-Item -Path $Item.Path -ItemType Directory
415+
$folder=New-Item -Path $Item.Path -ItemType Directory
411416
}
412417
if ($Item.IsText) {
413418
Write-PSFMessage -Level Verbose -Message "Creating as a Text-File"
@@ -418,60 +423,6 @@
418423
[System.IO.File]::WriteAllBytes($Item.FullPath, $Item.Content)
419424
}
420425
}
421-
422-
# $identifier = $Item.Identifier
423-
# $isFile = $Item.GetType().Name -eq 'TemplateItemFile'
424-
425-
# #region File
426-
# if ($isFile) {
427-
# $fileName = $Item.Name
428-
# if (-not $Raw) {
429-
# foreach ($param in $Item.FileSystemParameterFlat) {
430-
# $fileName = [PSModuleDevelopment.Utility.UtilityHost]::Replace($fileName, "$($identifier)$($param)$($identifier)", $ParameterFlat[$param], $false)
431-
# }
432-
# foreach ($param in $Item.FileSystemParameterScript) {
433-
# $fileName = [PSModuleDevelopment.Utility.UtilityHost]::Replace($fileName, "$($identifier)$($param)$($identifier)", $ParameterScript[$param], $false)
434-
# }
435-
# }
436-
# $destPath = Join-Path $Path $fileName
437-
438-
# if ($Item.PlainText) {
439-
# $text = $Item.Value
440-
# if (-not $Raw) {
441-
# foreach ($param in $Item.ContentParameterFlat) {
442-
# $text = [PSModuleDevelopment.Utility.UtilityHost]::Replace($text, "$($identifier)$($param)$($identifier)", $ParameterFlat[$param], $false)
443-
# }
444-
# foreach ($param in $Item.ContentParameterScript) {
445-
# $text = [PSModuleDevelopment.Utility.UtilityHost]::Replace($text, "$($identifier)!$($param)!$($identifier)", $ParameterScript[$param], $false)
446-
# }
447-
# }
448-
# [System.IO.File]::WriteAllText($destPath, $text, $Encoding)
449-
# }
450-
# else {
451-
# $bytes = [System.Convert]::FromBase64String($Item.Value)
452-
# [System.IO.File]::WriteAllBytes($destPath, $bytes)
453-
# }
454-
# }
455-
# #endregion File
456-
457-
# #region Folder
458-
# else {
459-
# $folderName = $Item.Name
460-
# if (-not $Raw) {
461-
# foreach ($param in $Item.FileSystemParameterFlat) {
462-
# $folderName = $folderName -replace "$($identifier)$([regex]::Escape($param))$($identifier)", $ParameterFlat[$param]
463-
# }
464-
# foreach ($param in $Item.FileSystemParameterScript) {
465-
# $folderName = $folderName -replace "$($identifier)!$([regex]::Escape($param))!$($identifier)", $ParameterScript[$param]
466-
# }
467-
# }
468-
# $folder = New-Item -Path $Path -Name $folderName -ItemType Directory
469-
470-
# foreach ($child in $Item.Children) {
471-
# Write-TemplateResults -Item $child -Path $folder.FullName -Encoding $Encoding -ParameterFlat $ParameterFlat -ParameterScript $ParameterScript -Raw $Raw
472-
# }
473-
# }
474-
# #endregion Folder
475426
}
476427
#endregion Helper function
477428
}

0 commit comments

Comments
 (0)