-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Description
Good evening Zachary
In <Modulename>.build.ps1
you naturally have a lot of Join-Path statements. I tried to understand your code (to extend it) and had to fight a lot :-).
Therefore, I created one function which calculates all used Path- and File-Names. This Function is called at the beginning of almost every task to that it has all Path- and File-Names. It looks like this:
# Calculates all Directories used in a build
Function Get-Buid-Directories {
$Dirs = ([ordered] @{
# Applied Config Variables
BuildReportsFolder = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BuildReportsFolder)
BuildToolPath = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BuildToolFolder)
TranscriptLog = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BuildToolFolder, $Script:BuildEnv.OptionTranscriptLogFile)
CodeHealthScanPathPublic = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.PublicFunctionSource)
CodeHealthScanPathPrivate = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.PrivateFunctionSource)
ReleasePath = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BaseReleaseFolder)
CurrentReleasePath = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BaseReleaseFolder, $Script:BuildEnv.ModuleToBuild)
ThisReleasePath = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BaseReleaseFolder, $Script:BuildEnv.ModuleVersion)
# Other Files and Dirs
BuildTools = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BuildToolFolder, 'dotSource')
ModuleManifestFileName = [IO.Path]::Combine($BuildRoot, "$($Script:BuildEnv.ModuleToBuild).psd1")
ScriptModuleFileName = [IO.Path]::Combine($BuildRoot, "$($Script:BuildEnv.ModuleToBuild).psm1")
CodeHealthReportPublic = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BuildReportsFolder, 'CodeHealthReport-Public.html')
CodeHealthReportPrivate = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BuildReportsFolder, 'CodeHealthReport-Private.html')
RootDocsPath = [IO.Path]::Combine($BuildRoot, 'docs')
RootDocsFunctionsPath = [IO.Path]::Combine($BuildRoot, 'docs', 'Functions')
BuildDocsPath = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BuildToolFolder, 'docs')
CurrentModuleManifestFile = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.BaseReleaseFolder, $Script:BuildEnv.ModuleToBuild, "$($Script:BuildEnv.ModuleToBuild).psd1")
# Staging Dirs
StagePath = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder)
StagePathEnUs = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, 'en-US')
StageReleasePath = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, $Script:BuildEnv.BaseReleaseFolder)
StagePSD1OutputFile = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, $Script:BuildEnv.BaseReleaseFolder, "$($Script:BuildEnv.ModuleToBuild).psd1")
StageReleaseModul = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, $Script:BuildEnv.BaseReleaseFolder, "$($Script:BuildEnv.ModuleToBuild).psm1")
StagePreloadFilePath = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, "$($Script:BuildEnv.OtherModuleSource)", 'PreLoad.ps1')
StagePrivateFunctionSourceFiles = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, "$($Script:BuildEnv.PrivateFunctionSource)", '*.ps1')
StagePublicFunctionSourceFiles = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, "$($Script:BuildEnv.PublicFunctionSource)", '*.ps1')
StagePostLoadFileName = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, "$($Script:BuildEnv.OtherModuleSource)", 'PostLoad.ps1')
StageOtherModuleSourceDir = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, $Script:BuildEnv.OtherModuleSource)
StagePrivateFunctionSourceDir = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, $Script:BuildEnv.PrivateFunctionSource)
StagePublicFunctionSourceDir = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, $Script:BuildEnv.PublicFunctionSource)
StageModuleToBuildDir = [IO.Path]::Combine($BuildRoot, $Script:BuildEnv.ScratchFolder, $Script:BuildEnv.ModuleToBuild)
})
# Return a Object
$oDirs = New-Object PSObject -Property $Dirs
$oDirs
}
I guess the Hashtable could be sorted better, but for contributors like myself, this helps a lot to just get an overview of all used path- and filenames and to undestand what's happening.
Metadata
Metadata
Assignees
Labels
No labels