Files
windows-app-template/PSScriptAnalyzerSettings.psd1
james.maes a5cbc98cd7 ci(template): verify packaged apps and prepare NuGet releases
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>
2026-10-10 12:50:51 -05:00

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'
}
}
}