Separate the template repository NuGet release from generated apps' Velopack releases. Pack and install the actual template in CI, then verify renamed CLI and no-CLI apps. Include a package readme and locked build graph. Pin all workflow variants to standards 0.1.2, rerun quality and security gates before release, install pinned hooks, and add PowerShell lint and tested coverage gates. Document initial restore and repository-specific setup. Validation: both packaged variants build and format successfully, 54 unit and 14 UI tests pass sequentially, and core/CLI coverage is 100%. Four Pester tests, PowerShell analysis, workflow lint, and pre-commit checks pass. Repository publication and the template NuGet policy remain pending. Refs: KofTwentyTwo/AppKit#4, KofTwentyTwo/AppKit#6, KofTwentyTwo/AppKit#7, KofTwentyTwo/AppKit#8, KofTwentyTwo/AppKit#9, KofTwentyTwo/AppKit#20 Co-Authored-By: Codex (GPT-6) <noreply@openai.com> Signed-off-by: James Maes <james@kof22.com>
57 lines
2.2 KiB
PowerShell
57 lines
2.2 KiB
PowerShell
# KofTwentyTwo PowerShell analysis (K22-CODE-SH-05). CI runs:
|
|
# Invoke-ScriptAnalyzer -Path . -Recurse -Settings ./PSScriptAnalyzerSettings.psd1 -EnableExit
|
|
# and `Invoke-Formatter` with the same settings for layout. PowerShell supports the
|
|
# Kingsrook layout fully: next-line (Allman) braces and 3-space indentation.
|
|
@{
|
|
Severity = @('Error', 'Warning', 'Information')
|
|
IncludeDefaultRules = $true
|
|
ExcludeRules = @()
|
|
Rules = @{
|
|
PSPlaceOpenBrace = @{
|
|
Enable = $true
|
|
OnSameLine = $false
|
|
NewLineAfter = $true
|
|
IgnoreOneLineBlock = $true
|
|
}
|
|
PSPlaceCloseBrace = @{
|
|
Enable = $true
|
|
NewLineAfter = $true
|
|
IgnoreOneLineBlock = $true
|
|
NoEmptyLineBefore = $true
|
|
}
|
|
PSUseConsistentIndentation = @{
|
|
Enable = $true
|
|
IndentationSize = 3
|
|
Kind = 'space'
|
|
PipelineIndentation = 'IncreaseIndentationForFirstPipeline'
|
|
}
|
|
PSUseConsistentWhitespace = @{
|
|
Enable = $true
|
|
CheckInnerBrace = $true
|
|
# Kingsrook writes if(...) with no space; the rule cannot require that, so it
|
|
# is not checked either way.
|
|
CheckOpenParen = $false
|
|
CheckOpenBrace = $false
|
|
# Kingsrook aligns the `=` of consecutive assignments (PSAlignAssignmentStatement
|
|
# below); CheckOperator would then flag every aligned line, so it is off.
|
|
CheckOperator = $false
|
|
CheckPipe = $true
|
|
CheckSeparator = $true
|
|
CheckParameter = $true
|
|
}
|
|
PSAlignAssignmentStatement = @{
|
|
Enable = $true
|
|
CheckHashtable = $true
|
|
}
|
|
PSUseCorrectCasing = @{ Enable = $true }
|
|
PSAvoidUsingCmdletAliases = @{ Enable = $true }
|
|
PSAvoidUsingWriteHost = @{ Enable = $true }
|
|
PSProvideCommentHelp = @{
|
|
Enable = $true
|
|
ExportedOnly = $false
|
|
BlockComment = $true
|
|
Placement = 'before'
|
|
}
|
|
}
|
|
}
|