@vyuhlabs/dxkit 2.4.8 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +235 -0
- package/README.md +360 -439
- package/dist/analyzers/security/aggregator.d.ts.map +1 -1
- package/dist/analyzers/security/aggregator.js +4 -46
- package/dist/analyzers/security/aggregator.js.map +1 -1
- package/dist/analyzers/tools/fingerprint.d.ts +91 -26
- package/dist/analyzers/tools/fingerprint.d.ts.map +1 -1
- package/dist/analyzers/tools/fingerprint.js +111 -22
- package/dist/analyzers/tools/fingerprint.js.map +1 -1
- package/dist/analyzers/tools/generic.d.ts.map +1 -1
- package/dist/analyzers/tools/generic.js +6 -1
- package/dist/analyzers/tools/generic.js.map +1 -1
- package/dist/analyzers/tools/gitleaks.d.ts +24 -1
- package/dist/analyzers/tools/gitleaks.d.ts.map +1 -1
- package/dist/analyzers/tools/gitleaks.js +20 -11
- package/dist/analyzers/tools/gitleaks.js.map +1 -1
- package/dist/analyzers/types.d.ts +6 -4
- package/dist/analyzers/types.d.ts.map +1 -1
- package/dist/baseline/baseline-file.d.ts +104 -0
- package/dist/baseline/baseline-file.d.ts.map +1 -0
- package/dist/baseline/baseline-file.js +110 -0
- package/dist/baseline/baseline-file.js.map +1 -0
- package/dist/baseline/check-renderers.d.ts +108 -0
- package/dist/baseline/check-renderers.d.ts.map +1 -0
- package/dist/baseline/check-renderers.js +379 -0
- package/dist/baseline/check-renderers.js.map +1 -0
- package/dist/baseline/check.d.ts +127 -0
- package/dist/baseline/check.d.ts.map +1 -0
- package/dist/baseline/check.js +462 -0
- package/dist/baseline/check.js.map +1 -0
- package/dist/baseline/content-hash.d.ts +83 -0
- package/dist/baseline/content-hash.d.ts.map +1 -0
- package/dist/baseline/content-hash.js +131 -0
- package/dist/baseline/content-hash.js.map +1 -0
- package/dist/baseline/create.d.ts +96 -0
- package/dist/baseline/create.d.ts.map +1 -0
- package/dist/baseline/create.js +339 -0
- package/dist/baseline/create.js.map +1 -0
- package/dist/baseline/entry-to-located.d.ts +35 -0
- package/dist/baseline/entry-to-located.d.ts.map +1 -0
- package/dist/baseline/entry-to-located.js +72 -0
- package/dist/baseline/entry-to-located.js.map +1 -0
- package/dist/baseline/finding-identity.d.ts +47 -0
- package/dist/baseline/finding-identity.d.ts.map +1 -0
- package/dist/baseline/finding-identity.js +292 -0
- package/dist/baseline/finding-identity.js.map +1 -0
- package/dist/baseline/git-aware-match.d.ts +146 -0
- package/dist/baseline/git-aware-match.d.ts.map +1 -0
- package/dist/baseline/git-aware-match.js +439 -0
- package/dist/baseline/git-aware-match.js.map +1 -0
- package/dist/baseline/policy.d.ts +171 -0
- package/dist/baseline/policy.d.ts.map +1 -0
- package/dist/baseline/policy.js +206 -0
- package/dist/baseline/policy.js.map +1 -0
- package/dist/baseline/producers/health.d.ts +30 -0
- package/dist/baseline/producers/health.d.ts.map +1 -0
- package/dist/baseline/producers/health.js +42 -0
- package/dist/baseline/producers/health.js.map +1 -0
- package/dist/baseline/producers/index.d.ts +164 -0
- package/dist/baseline/producers/index.d.ts.map +1 -0
- package/dist/baseline/producers/index.js +200 -0
- package/dist/baseline/producers/index.js.map +1 -0
- package/dist/baseline/producers/licenses.d.ts +23 -0
- package/dist/baseline/producers/licenses.d.ts.map +1 -0
- package/dist/baseline/producers/licenses.js +46 -0
- package/dist/baseline/producers/licenses.js.map +1 -0
- package/dist/baseline/producers/quality.d.ts +39 -0
- package/dist/baseline/producers/quality.d.ts.map +1 -0
- package/dist/baseline/producers/quality.js +84 -0
- package/dist/baseline/producers/quality.js.map +1 -0
- package/dist/baseline/producers/secret-hmac.d.ts +45 -0
- package/dist/baseline/producers/secret-hmac.d.ts.map +1 -0
- package/dist/baseline/producers/secret-hmac.js +70 -0
- package/dist/baseline/producers/secret-hmac.js.map +1 -0
- package/dist/baseline/producers/security.d.ts +59 -0
- package/dist/baseline/producers/security.d.ts.map +1 -0
- package/dist/baseline/producers/security.js +135 -0
- package/dist/baseline/producers/security.js.map +1 -0
- package/dist/baseline/producers/tests.d.ts +36 -0
- package/dist/baseline/producers/tests.d.ts.map +1 -0
- package/dist/baseline/producers/tests.js +69 -0
- package/dist/baseline/producers/tests.js.map +1 -0
- package/dist/baseline/salt.d.ts +45 -0
- package/dist/baseline/salt.d.ts.map +1 -0
- package/dist/baseline/salt.js +113 -0
- package/dist/baseline/salt.js.map +1 -0
- package/dist/baseline/show.d.ts +79 -0
- package/dist/baseline/show.d.ts.map +1 -0
- package/dist/baseline/show.js +233 -0
- package/dist/baseline/show.js.map +1 -0
- package/dist/baseline/types.d.ts +482 -0
- package/dist/baseline/types.d.ts.map +1 -0
- package/dist/baseline/types.js +53 -0
- package/dist/baseline/types.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +360 -81
- package/dist/cli.js.map +1 -1
- package/dist/codebase-scanner.d.ts.map +1 -1
- package/dist/codebase-scanner.js +0 -1
- package/dist/codebase-scanner.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -4
- package/dist/constants.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +22 -25
- package/dist/doctor.js.map +1 -1
- package/dist/fail-on.d.ts +84 -0
- package/dist/fail-on.d.ts.map +1 -0
- package/dist/fail-on.js +128 -0
- package/dist/fail-on.js.map +1 -0
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +2 -141
- package/dist/generator.js.map +1 -1
- package/dist/languages/csharp.d.ts.map +1 -1
- package/dist/languages/csharp.js +0 -9
- package/dist/languages/csharp.js.map +1 -1
- package/dist/languages/go.d.ts.map +1 -1
- package/dist/languages/go.js +0 -15
- package/dist/languages/go.js.map +1 -1
- package/dist/languages/index.d.ts +1 -1
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/java.d.ts.map +1 -1
- package/dist/languages/java.js +0 -6
- package/dist/languages/java.js.map +1 -1
- package/dist/languages/kotlin.d.ts.map +1 -1
- package/dist/languages/kotlin.js +0 -11
- package/dist/languages/kotlin.js.map +1 -1
- package/dist/languages/python.d.ts.map +1 -1
- package/dist/languages/python.js +0 -15
- package/dist/languages/python.js.map +1 -1
- package/dist/languages/ruby.d.ts.map +1 -1
- package/dist/languages/ruby.js +0 -6
- package/dist/languages/ruby.js.map +1 -1
- package/dist/languages/rust.d.ts.map +1 -1
- package/dist/languages/rust.js +0 -4
- package/dist/languages/rust.js.map +1 -1
- package/dist/languages/types.d.ts +2 -28
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript.d.ts.map +1 -1
- package/dist/languages/typescript.js +26 -4
- package/dist/languages/typescript.js.map +1 -1
- package/dist/lib.d.ts +2 -3
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +3 -6
- package/dist/lib.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +0 -10
- package/dist/prompts.js.map +1 -1
- package/dist/report-schema.d.ts +42 -0
- package/dist/report-schema.d.ts.map +1 -0
- package/dist/report-schema.js +54 -0
- package/dist/report-schema.js.map +1 -0
- package/dist/ship-installers.d.ts +106 -0
- package/dist/ship-installers.d.ts.map +1 -0
- package/dist/ship-installers.js +415 -0
- package/dist/ship-installers.js.map +1 -0
- package/dist/types.d.ts +0 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +0 -4
- package/dist/update.js.map +1 -1
- package/package.json +17 -11
- package/templates/.claude/agents/onboarding.md +5 -4
- package/templates/.claude/agents-available/codebase-explorer.md +1 -1
- package/templates/.claude/agents-available/debugger.md +2 -2
- package/templates/.claude/agents-available/health-auditor.md +2 -2
- package/templates/.claude/commands/doctor.md +20 -12
- package/templates/.claude/skills/build/SKILL.md.template +22 -30
- package/templates/.claude/skills/deploy/SKILL.md.template +5 -25
- package/templates/.claude/skills/doctor/SKILL.md +24 -47
- package/templates/.claude/skills/gcloud/SKILL.md +5 -5
- package/templates/.claude/skills/learned/SKILL.md +1 -1
- package/templates/.claude/skills/pulumi/SKILL.md +2 -2
- package/templates/.claude/skills/quality/SKILL.md.template +4 -23
- package/templates/.claude/skills/review/SKILL.md.template +4 -3
- package/templates/.claude/skills/scaffold/SKILL.md.template +5 -15
- package/templates/.claude/skills/secrets/SKILL.md +20 -21
- package/templates/.claude/skills/session/SKILL.md +20 -31
- package/templates/.claude/skills/test/SKILL.md.template +1 -7
- package/templates/.devcontainer/devcontainer.json +81 -0
- package/templates/.devcontainer/install-agent-clis.sh +42 -0
- package/templates/.devcontainer/post-create.sh +67 -0
- package/templates/.githooks/pre-commit +55 -0
- package/templates/.githooks/pre-push +63 -0
- package/templates/.github/workflows/dxkit-baseline-refresh.yml +78 -0
- package/templates/.github/workflows/dxkit-guardrails.yml +98 -0
- package/templates/CLAUDE.md.template +62 -196
- package/dist/project-yaml.d.ts +0 -13
- package/dist/project-yaml.d.ts.map +0 -1
- package/dist/project-yaml.js +0 -188
- package/dist/project-yaml.js.map +0 -1
- package/templates/.ai/README.md +0 -117
- package/templates/.ai/prompts/execution-prompt.md +0 -9
- package/templates/.ai/prompts/planning-prompt.md +0 -18
- package/templates/.ai/prompts/session-end-template.md +0 -182
- package/templates/.ai/prompts/session-end.md +0 -132
- package/templates/.ai/prompts/session-start.md +0 -109
- package/templates/.ai/prompts/step-by-step.md +0 -113
- package/templates/.ai/sessions/.gitkeep +0 -0
- package/templates/.claude/commands/setup-pr-review.md +0 -72
- package/templates/.devcontainer/Dockerfile.dev.template +0 -89
- package/templates/.devcontainer/devcontainer.json.template +0 -184
- package/templates/.devcontainer/docker-compose.yml.template +0 -105
- package/templates/.devcontainer/init-scripts/01-init.sql.template +0 -12
- package/templates/.devcontainer/post-create.sh.template +0 -298
- package/templates/.github/workflows/ci.yml.template +0 -399
- package/templates/.github/workflows/quality.yml.template +0 -376
- package/templates/.pre-commit-config.yaml.template +0 -106
- package/templates/.project/config/edit_config.py +0 -275
- package/templates/.project/config/project_config.py +0 -894
- package/templates/.project/scripts/codegen/generate-all.sh +0 -20
- package/templates/.project/scripts/codegen/validate-all.sh +0 -17
- package/templates/.project/scripts/docs/generate-all.sh +0 -30
- package/templates/.project/scripts/docs/serve.sh +0 -20
- package/templates/.project/scripts/quality/fix-all.sh +0 -138
- package/templates/.project/scripts/quality/lint-go.sh +0 -34
- package/templates/.project/scripts/quality/lint-python.sh +0 -54
- package/templates/.project/scripts/quality/run-all.sh +0 -497
- package/templates/.project/scripts/session/commit.sh +0 -70
- package/templates/.project/scripts/session/create-pr.sh +0 -165
- package/templates/.project/scripts/session/end.sh +0 -207
- package/templates/.project/scripts/session/start.sh +0 -233
- package/templates/.project/scripts/setup/doctor.sh +0 -404
- package/templates/.project/scripts/setup/interactive-setup.sh +0 -585
- package/templates/.project/scripts/sync/sync-template.sh +0 -328
- package/templates/.project/scripts/test/run-all.sh +0 -179
- package/templates/.project/scripts/test/run-quick.sh +0 -25
- package/templates/Makefile +0 -514
- package/templates/config/versions.yaml +0 -57
- package/templates/configs/go/.golangci.yml.template +0 -172
- package/templates/configs/go/go.mod.template +0 -15
- package/templates/configs/java/README.md +0 -6
- package/templates/configs/kotlin/README.md +0 -6
- package/templates/configs/node/package.json.template +0 -67
- package/templates/configs/node/tsconfig.json.template +0 -53
- package/templates/configs/python/pyproject.toml.template +0 -92
- package/templates/configs/python/pytest.ini.template +0 -64
- package/templates/configs/python/ruff.toml.template +0 -79
- package/templates/configs/ruby/README.md +0 -6
- package/templates/configs/rust/Cargo.toml.template +0 -51
- package/templates/configs/shared/.editorconfig +0 -67
- package/templates/scripts/validate-templates.sh +0 -449
|
@@ -1,376 +0,0 @@
|
|
|
1
|
-
# Generated from template - Code Quality Checks
|
|
2
|
-
# This workflow runs linting and formatting checks for all enabled languages
|
|
3
|
-
# Quality checks can be disabled via .project.yaml or SKIP_QUALITY_CHECKS repo variable
|
|
4
|
-
# Configuration is loaded from .project.yaml via project_config.py
|
|
5
|
-
|
|
6
|
-
name: Quality Checks
|
|
7
|
-
|
|
8
|
-
on:
|
|
9
|
-
push:
|
|
10
|
-
branches: [main, develop]
|
|
11
|
-
pull_request:
|
|
12
|
-
branches: [main, develop]
|
|
13
|
-
|
|
14
|
-
env:
|
|
15
|
-
SKIP_QUALITY_CHECKS: ${{ vars.SKIP_QUALITY_CHECKS || 'false' }}
|
|
16
|
-
|
|
17
|
-
jobs:
|
|
18
|
-
# Validate configuration and load quality settings
|
|
19
|
-
validate:
|
|
20
|
-
name: Validate Configuration
|
|
21
|
-
runs-on: ubuntu-latest
|
|
22
|
-
outputs:
|
|
23
|
-
skip_checks: ${{ steps.config.outputs.skip_checks }}
|
|
24
|
-
steps:
|
|
25
|
-
- name: Checkout code
|
|
26
|
-
uses: actions/checkout@v4
|
|
27
|
-
|
|
28
|
-
- name: Set up Python for config
|
|
29
|
-
uses: actions/setup-python@v5
|
|
30
|
-
with:
|
|
31
|
-
python-version: "3.12"
|
|
32
|
-
|
|
33
|
-
- name: Install PyYAML
|
|
34
|
-
run: pip install pyyaml
|
|
35
|
-
|
|
36
|
-
- name: Load configuration
|
|
37
|
-
id: config
|
|
38
|
-
run: |
|
|
39
|
-
# Check repo variable first
|
|
40
|
-
if [ "$SKIP_QUALITY_CHECKS" = "true" ]; then
|
|
41
|
-
echo "Quality checks disabled via SKIP_QUALITY_CHECKS variable"
|
|
42
|
-
echo "skip_checks=true" >> $GITHUB_OUTPUT
|
|
43
|
-
exit 0
|
|
44
|
-
fi
|
|
45
|
-
|
|
46
|
-
# Validate .project.yaml exists
|
|
47
|
-
if [ ! -f ".project.yaml" ]; then
|
|
48
|
-
echo "::warning::Missing .project.yaml - using defaults"
|
|
49
|
-
fi
|
|
50
|
-
|
|
51
|
-
echo "skip_checks=false" >> $GITHUB_OUTPUT
|
|
52
|
-
echo "Quality checks enabled"
|
|
53
|
-
|
|
54
|
-
{{#IF_QUALITY_CHECKS}}
|
|
55
|
-
# File validation and security checks (sync with pre-commit and make quality)
|
|
56
|
-
file-validation:
|
|
57
|
-
name: File Validation & Security
|
|
58
|
-
runs-on: ubuntu-latest
|
|
59
|
-
needs: validate
|
|
60
|
-
if: needs.validate.outputs.skip_checks != 'true'
|
|
61
|
-
|
|
62
|
-
steps:
|
|
63
|
-
- name: Checkout code
|
|
64
|
-
uses: actions/checkout@v4
|
|
65
|
-
|
|
66
|
-
- name: Set up Python
|
|
67
|
-
uses: actions/setup-python@v5
|
|
68
|
-
with:
|
|
69
|
-
python-version: "3.12"
|
|
70
|
-
|
|
71
|
-
- name: Install dependencies
|
|
72
|
-
run: pip install pyyaml
|
|
73
|
-
|
|
74
|
-
- name: Validate YAML files
|
|
75
|
-
run: |
|
|
76
|
-
echo "Validating YAML files..."
|
|
77
|
-
FAILED=0
|
|
78
|
-
for f in $(find . -name "*.yaml" -o -name "*.yml" -type f -not -path "./.git/*" -not -path "./node_modules/*" 2>/dev/null | head -100); do
|
|
79
|
-
if ! python3 -c "import yaml; yaml.safe_load(open('$f'))" 2>/dev/null; then
|
|
80
|
-
echo "Invalid YAML: $f"
|
|
81
|
-
FAILED=1
|
|
82
|
-
fi
|
|
83
|
-
done
|
|
84
|
-
if [ $FAILED -eq 1 ]; then exit 1; fi
|
|
85
|
-
echo "All YAML files valid"
|
|
86
|
-
|
|
87
|
-
- name: Validate JSON files
|
|
88
|
-
run: |
|
|
89
|
-
echo "Validating JSON files..."
|
|
90
|
-
FAILED=0
|
|
91
|
-
for f in $(find . -name "*.json" -type f -not -path "./.git/*" -not -path "./node_modules/*" 2>/dev/null | head -100); do
|
|
92
|
-
if ! python3 -c "import json; json.load(open('$f'))" 2>/dev/null; then
|
|
93
|
-
echo "Invalid JSON: $f"
|
|
94
|
-
FAILED=1
|
|
95
|
-
fi
|
|
96
|
-
done
|
|
97
|
-
if [ $FAILED -eq 1 ]; then exit 1; fi
|
|
98
|
-
echo "All JSON files valid"
|
|
99
|
-
|
|
100
|
-
- name: Validate TOML files
|
|
101
|
-
run: |
|
|
102
|
-
echo "Validating TOML files..."
|
|
103
|
-
FAILED=0
|
|
104
|
-
for f in $(find . -name "*.toml" -type f -not -path "./.git/*" -not -path "./node_modules/*" -not -path "./target/*" 2>/dev/null | head -100); do
|
|
105
|
-
if ! python3 -c "import tomllib; tomllib.load(open('$f', 'rb'))" 2>/dev/null; then
|
|
106
|
-
echo "Invalid TOML: $f"
|
|
107
|
-
FAILED=1
|
|
108
|
-
fi
|
|
109
|
-
done
|
|
110
|
-
if [ $FAILED -eq 1 ]; then exit 1; fi
|
|
111
|
-
echo "All TOML files valid"
|
|
112
|
-
|
|
113
|
-
- name: Check for merge conflict markers
|
|
114
|
-
run: |
|
|
115
|
-
echo "Checking for merge conflict markers..."
|
|
116
|
-
if grep -rl "^<<<<<<< \|^=======$\|^>>>>>>> " . --include="*.py" --include="*.go" --include="*.js" --include="*.ts" --include="*.yaml" --include="*.yml" --include="*.json" --include="*.md" 2>/dev/null | grep -v ".git" | head -20; then
|
|
117
|
-
echo "Merge conflict markers found!"
|
|
118
|
-
exit 1
|
|
119
|
-
fi
|
|
120
|
-
echo "No merge conflict markers found"
|
|
121
|
-
|
|
122
|
-
- name: Check for private keys
|
|
123
|
-
run: |
|
|
124
|
-
echo "Checking for private keys..."
|
|
125
|
-
if grep -rl "BEGIN.*PRIVATE KEY" . 2>/dev/null | grep -v ".git" | grep -v "node_modules" | head -20; then
|
|
126
|
-
echo "Private keys detected - DO NOT COMMIT!"
|
|
127
|
-
exit 1
|
|
128
|
-
fi
|
|
129
|
-
echo "No private keys detected"
|
|
130
|
-
|
|
131
|
-
- name: Check for large files
|
|
132
|
-
run: |
|
|
133
|
-
echo "Checking for large files (>1MB)..."
|
|
134
|
-
LARGE_FILES=$(find . -type f -size +1M -not -path "./.git/*" -not -path "./node_modules/*" -not -path "./target/*" 2>/dev/null | head -20)
|
|
135
|
-
if [ -n "$LARGE_FILES" ]; then
|
|
136
|
-
echo "Warning: Large files detected:"
|
|
137
|
-
echo "$LARGE_FILES"
|
|
138
|
-
echo "::warning::Large files detected (>1MB) - consider adding to .gitignore"
|
|
139
|
-
fi
|
|
140
|
-
echo "Large files check complete"
|
|
141
|
-
|
|
142
|
-
{{#IF_PYTHON}}
|
|
143
|
-
lint-python:
|
|
144
|
-
name: Python Linting & Formatting
|
|
145
|
-
runs-on: ubuntu-latest
|
|
146
|
-
needs: validate
|
|
147
|
-
if: needs.validate.outputs.skip_checks != 'true'
|
|
148
|
-
|
|
149
|
-
steps:
|
|
150
|
-
- name: Checkout code
|
|
151
|
-
uses: actions/checkout@v4
|
|
152
|
-
|
|
153
|
-
- name: Set up Python {{PYTHON_VERSION}}
|
|
154
|
-
uses: actions/setup-python@v5
|
|
155
|
-
with:
|
|
156
|
-
python-version: "{{PYTHON_VERSION}}"
|
|
157
|
-
|
|
158
|
-
- name: Install dependencies
|
|
159
|
-
run: |
|
|
160
|
-
python -m pip install --upgrade pip
|
|
161
|
-
# Versions synced with .template/config/versions.yaml
|
|
162
|
-
pip install pyyaml "ruff>=0.8.0" "mypy>=1.8.0"
|
|
163
|
-
|
|
164
|
-
- name: Load quality configuration
|
|
165
|
-
id: quality
|
|
166
|
-
run: |
|
|
167
|
-
if [ -f .project/config/project_config.py ]; then
|
|
168
|
-
eval "$(python3 .project/config/project_config.py export python)"
|
|
169
|
-
echo "lint_enabled=${PYTHON_LINT_ENABLED:-true}" >> $GITHUB_OUTPUT
|
|
170
|
-
echo "typecheck_enabled=${PYTHON_TYPECHECK_ENABLED:-true}" >> $GITHUB_OUTPUT
|
|
171
|
-
echo "format_enabled=${PYTHON_FORMAT_ENABLED:-true}" >> $GITHUB_OUTPUT
|
|
172
|
-
else
|
|
173
|
-
echo "lint_enabled=true" >> $GITHUB_OUTPUT
|
|
174
|
-
echo "typecheck_enabled=true" >> $GITHUB_OUTPUT
|
|
175
|
-
echo "format_enabled=true" >> $GITHUB_OUTPUT
|
|
176
|
-
fi
|
|
177
|
-
|
|
178
|
-
- name: Run ruff linter
|
|
179
|
-
if: steps.quality.outputs.lint_enabled == 'true'
|
|
180
|
-
run: ruff check .
|
|
181
|
-
|
|
182
|
-
- name: Check formatting with ruff
|
|
183
|
-
if: steps.quality.outputs.format_enabled == 'true'
|
|
184
|
-
run: ruff format --check .
|
|
185
|
-
|
|
186
|
-
- name: Run mypy type checker
|
|
187
|
-
if: steps.quality.outputs.typecheck_enabled == 'true'
|
|
188
|
-
run: mypy . || true
|
|
189
|
-
continue-on-error: true
|
|
190
|
-
|
|
191
|
-
{{/IF_PYTHON}}
|
|
192
|
-
{{#IF_GO}}
|
|
193
|
-
lint-go:
|
|
194
|
-
name: Go Linting & Formatting
|
|
195
|
-
runs-on: ubuntu-latest
|
|
196
|
-
needs: validate
|
|
197
|
-
if: needs.validate.outputs.skip_checks != 'true'
|
|
198
|
-
|
|
199
|
-
steps:
|
|
200
|
-
- name: Checkout code
|
|
201
|
-
uses: actions/checkout@v4
|
|
202
|
-
|
|
203
|
-
- name: Set up Go {{GO_VERSION}}
|
|
204
|
-
uses: actions/setup-go@v5
|
|
205
|
-
with:
|
|
206
|
-
go-version: "{{GO_VERSION}}"
|
|
207
|
-
|
|
208
|
-
- name: Set up Python for config
|
|
209
|
-
uses: actions/setup-python@v5
|
|
210
|
-
with:
|
|
211
|
-
python-version: "3.12"
|
|
212
|
-
|
|
213
|
-
- name: Install PyYAML
|
|
214
|
-
run: pip install pyyaml
|
|
215
|
-
|
|
216
|
-
- name: Load quality configuration
|
|
217
|
-
id: quality
|
|
218
|
-
run: |
|
|
219
|
-
if [ -f .project/config/project_config.py ]; then
|
|
220
|
-
eval "$(python3 .project/config/project_config.py export go)"
|
|
221
|
-
echo "lint_enabled=${GO_LINT_ENABLED:-true}" >> $GITHUB_OUTPUT
|
|
222
|
-
echo "format_enabled=${GO_FORMAT_ENABLED:-true}" >> $GITHUB_OUTPUT
|
|
223
|
-
else
|
|
224
|
-
echo "lint_enabled=true" >> $GITHUB_OUTPUT
|
|
225
|
-
echo "format_enabled=true" >> $GITHUB_OUTPUT
|
|
226
|
-
fi
|
|
227
|
-
|
|
228
|
-
- name: Run gofmt
|
|
229
|
-
if: steps.quality.outputs.format_enabled == 'true'
|
|
230
|
-
run: |
|
|
231
|
-
if [ "$(gofmt -l . | wc -l)" -gt 0 ]; then
|
|
232
|
-
echo "The following files are not formatted:"
|
|
233
|
-
gofmt -l .
|
|
234
|
-
exit 1
|
|
235
|
-
fi
|
|
236
|
-
|
|
237
|
-
- name: Run golangci-lint
|
|
238
|
-
if: steps.quality.outputs.lint_enabled == 'true'
|
|
239
|
-
uses: golangci/golangci-lint-action@v3
|
|
240
|
-
with:
|
|
241
|
-
version: latest
|
|
242
|
-
args: --timeout=5m
|
|
243
|
-
|
|
244
|
-
{{/IF_GO}}
|
|
245
|
-
{{#IF_NODE}}
|
|
246
|
-
lint-node:
|
|
247
|
-
name: Node.js Linting & Formatting
|
|
248
|
-
runs-on: ubuntu-latest
|
|
249
|
-
needs: validate
|
|
250
|
-
if: needs.validate.outputs.skip_checks != 'true'
|
|
251
|
-
|
|
252
|
-
steps:
|
|
253
|
-
- name: Checkout code
|
|
254
|
-
uses: actions/checkout@v4
|
|
255
|
-
|
|
256
|
-
- name: Set up Node.js {{NODE_VERSION}}
|
|
257
|
-
uses: actions/setup-node@v4
|
|
258
|
-
with:
|
|
259
|
-
node-version: "{{NODE_VERSION}}"
|
|
260
|
-
cache: 'npm'
|
|
261
|
-
|
|
262
|
-
- name: Set up Python for config
|
|
263
|
-
uses: actions/setup-python@v5
|
|
264
|
-
with:
|
|
265
|
-
python-version: "3.12"
|
|
266
|
-
|
|
267
|
-
- name: Install PyYAML
|
|
268
|
-
run: pip install pyyaml
|
|
269
|
-
|
|
270
|
-
- name: Load quality configuration
|
|
271
|
-
id: quality
|
|
272
|
-
run: |
|
|
273
|
-
if [ -f .project/config/project_config.py ]; then
|
|
274
|
-
eval "$(python3 .project/config/project_config.py export node)"
|
|
275
|
-
echo "lint_enabled=${NODE_LINT_ENABLED:-true}" >> $GITHUB_OUTPUT
|
|
276
|
-
echo "format_enabled=${NODE_FORMAT_ENABLED:-true}" >> $GITHUB_OUTPUT
|
|
277
|
-
else
|
|
278
|
-
echo "lint_enabled=true" >> $GITHUB_OUTPUT
|
|
279
|
-
echo "format_enabled=true" >> $GITHUB_OUTPUT
|
|
280
|
-
fi
|
|
281
|
-
|
|
282
|
-
- name: Install dependencies
|
|
283
|
-
run: npm ci
|
|
284
|
-
|
|
285
|
-
- name: Run ESLint
|
|
286
|
-
if: steps.quality.outputs.lint_enabled == 'true'
|
|
287
|
-
run: npm run lint
|
|
288
|
-
continue-on-error: false
|
|
289
|
-
|
|
290
|
-
- name: Check formatting with Prettier
|
|
291
|
-
if: steps.quality.outputs.format_enabled == 'true'
|
|
292
|
-
run: npx prettier --check 'src/**/*.{ts,js,json}'
|
|
293
|
-
|
|
294
|
-
{{/IF_NODE}}
|
|
295
|
-
{{#IF_NEXTJS}}
|
|
296
|
-
lint-nextjs:
|
|
297
|
-
name: Next.js Linting & Formatting
|
|
298
|
-
runs-on: ubuntu-latest
|
|
299
|
-
needs: validate
|
|
300
|
-
if: needs.validate.outputs.skip_checks != 'true'
|
|
301
|
-
defaults:
|
|
302
|
-
run:
|
|
303
|
-
working-directory: frontend
|
|
304
|
-
|
|
305
|
-
steps:
|
|
306
|
-
- name: Checkout code
|
|
307
|
-
uses: actions/checkout@v4
|
|
308
|
-
|
|
309
|
-
- name: Set up Node.js {{NODE_VERSION}}
|
|
310
|
-
uses: actions/setup-node@v4
|
|
311
|
-
with:
|
|
312
|
-
node-version: "{{NODE_VERSION}}"
|
|
313
|
-
cache: 'npm'
|
|
314
|
-
cache-dependency-path: frontend/package-lock.json
|
|
315
|
-
|
|
316
|
-
- name: Install dependencies
|
|
317
|
-
run: npm ci
|
|
318
|
-
|
|
319
|
-
- name: Run ESLint
|
|
320
|
-
run: npm run lint
|
|
321
|
-
|
|
322
|
-
- name: Check formatting with Prettier
|
|
323
|
-
run: npx prettier --check 'src/**/*.{ts,tsx,js,jsx,json,css}'
|
|
324
|
-
|
|
325
|
-
- name: Run TypeScript type check
|
|
326
|
-
run: npx tsc --noEmit
|
|
327
|
-
|
|
328
|
-
{{/IF_NEXTJS}}
|
|
329
|
-
{{#IF_RUST}}
|
|
330
|
-
lint-rust:
|
|
331
|
-
name: Rust Linting & Formatting
|
|
332
|
-
runs-on: ubuntu-latest
|
|
333
|
-
needs: validate
|
|
334
|
-
if: needs.validate.outputs.skip_checks != 'true'
|
|
335
|
-
|
|
336
|
-
steps:
|
|
337
|
-
- name: Checkout code
|
|
338
|
-
uses: actions/checkout@v4
|
|
339
|
-
|
|
340
|
-
- name: Set up Rust {{RUST_VERSION}}
|
|
341
|
-
uses: actions-rs/toolchain@v1
|
|
342
|
-
with:
|
|
343
|
-
toolchain: {{RUST_VERSION}}
|
|
344
|
-
override: true
|
|
345
|
-
components: rustfmt, clippy
|
|
346
|
-
|
|
347
|
-
- name: Set up Python for config
|
|
348
|
-
uses: actions/setup-python@v5
|
|
349
|
-
with:
|
|
350
|
-
python-version: "3.12"
|
|
351
|
-
|
|
352
|
-
- name: Install PyYAML
|
|
353
|
-
run: pip install pyyaml
|
|
354
|
-
|
|
355
|
-
- name: Load quality configuration
|
|
356
|
-
id: quality
|
|
357
|
-
run: |
|
|
358
|
-
if [ -f .project/config/project_config.py ]; then
|
|
359
|
-
eval "$(python3 .project/config/project_config.py export rust)"
|
|
360
|
-
echo "lint_enabled=${RUST_LINT_ENABLED:-true}" >> $GITHUB_OUTPUT
|
|
361
|
-
echo "format_enabled=${RUST_FORMAT_ENABLED:-true}" >> $GITHUB_OUTPUT
|
|
362
|
-
else
|
|
363
|
-
echo "lint_enabled=true" >> $GITHUB_OUTPUT
|
|
364
|
-
echo "format_enabled=true" >> $GITHUB_OUTPUT
|
|
365
|
-
fi
|
|
366
|
-
|
|
367
|
-
- name: Check formatting with rustfmt
|
|
368
|
-
if: steps.quality.outputs.format_enabled == 'true'
|
|
369
|
-
run: cargo fmt -- --check
|
|
370
|
-
|
|
371
|
-
- name: Run clippy linter
|
|
372
|
-
if: steps.quality.outputs.lint_enabled == 'true'
|
|
373
|
-
run: cargo clippy -- -D warnings
|
|
374
|
-
|
|
375
|
-
{{/IF_RUST}}
|
|
376
|
-
{{/IF_QUALITY_CHECKS}}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
# Generated from template - Pre-commit hooks configuration
|
|
2
|
-
# Install pre-commit: pip install pre-commit
|
|
3
|
-
# Setup hooks: pre-commit install
|
|
4
|
-
|
|
5
|
-
# Exclude template and framework directories from all hooks
|
|
6
|
-
exclude: ^(\.template/|\.project/)
|
|
7
|
-
|
|
8
|
-
repos:
|
|
9
|
-
{{#IF_PYTHON}}
|
|
10
|
-
# Python - Ruff linter and formatter (check-only, use 'make fix' to auto-fix)
|
|
11
|
-
# Version synced with .template/config/versions.yaml
|
|
12
|
-
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
13
|
-
rev: v0.8.0
|
|
14
|
-
hooks:
|
|
15
|
-
- id: ruff
|
|
16
|
-
- id: ruff-format
|
|
17
|
-
args: [--check]
|
|
18
|
-
|
|
19
|
-
# Python - Type checking with mypy (sync with make quality)
|
|
20
|
-
# Version synced with .template/config/versions.yaml
|
|
21
|
-
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
22
|
-
rev: v1.8.0
|
|
23
|
-
hooks:
|
|
24
|
-
- id: mypy
|
|
25
|
-
args: [--ignore-missing-imports]
|
|
26
|
-
additional_dependencies: []
|
|
27
|
-
|
|
28
|
-
{{/IF_PYTHON}}
|
|
29
|
-
{{#IF_GO}}
|
|
30
|
-
# Go - Formatting and linting (check-only, use 'make fix' to auto-fix)
|
|
31
|
-
- repo: https://github.com/golangci/golangci-lint
|
|
32
|
-
rev: v1.55.2
|
|
33
|
-
hooks:
|
|
34
|
-
- id: golangci-lint
|
|
35
|
-
args: [--timeout=5m]
|
|
36
|
-
|
|
37
|
-
- repo: https://github.com/dnephin/pre-commit-golang
|
|
38
|
-
rev: v0.5.1
|
|
39
|
-
hooks:
|
|
40
|
-
- id: go-fmt
|
|
41
|
-
- id: go-imports
|
|
42
|
-
|
|
43
|
-
{{/IF_GO}}
|
|
44
|
-
{{#IF_NODE}}
|
|
45
|
-
# Node.js - ESLint and Prettier (check-only, use 'make fix' to auto-fix)
|
|
46
|
-
- repo: https://github.com/pre-commit/mirrors-eslint
|
|
47
|
-
rev: v8.56.0
|
|
48
|
-
hooks:
|
|
49
|
-
- id: eslint
|
|
50
|
-
files: \.(js|ts|jsx|tsx)$
|
|
51
|
-
types: [file]
|
|
52
|
-
additional_dependencies:
|
|
53
|
-
- eslint@8.56.0
|
|
54
|
-
- '@typescript-eslint/parser@6.19.0'
|
|
55
|
-
- '@typescript-eslint/eslint-plugin@6.19.0'
|
|
56
|
-
|
|
57
|
-
- repo: https://github.com/pre-commit/mirrors-prettier
|
|
58
|
-
rev: v3.1.0
|
|
59
|
-
hooks:
|
|
60
|
-
- id: prettier
|
|
61
|
-
args: [--check]
|
|
62
|
-
types_or: [javascript, jsx, ts, tsx, json, yaml, markdown]
|
|
63
|
-
|
|
64
|
-
{{/IF_NODE}}
|
|
65
|
-
{{#IF_NEXTJS}}
|
|
66
|
-
# Next.js - ESLint and TypeScript for frontend directory
|
|
67
|
-
- repo: local
|
|
68
|
-
hooks:
|
|
69
|
-
- id: nextjs-lint
|
|
70
|
-
name: Next.js ESLint
|
|
71
|
-
entry: bash -c 'cd frontend && npm run lint'
|
|
72
|
-
language: system
|
|
73
|
-
files: ^frontend/.*\.(js|jsx|ts|tsx)$
|
|
74
|
-
pass_filenames: false
|
|
75
|
-
|
|
76
|
-
- id: nextjs-typecheck
|
|
77
|
-
name: Next.js TypeScript
|
|
78
|
-
entry: bash -c 'cd frontend && npx tsc --noEmit'
|
|
79
|
-
language: system
|
|
80
|
-
files: ^frontend/.*\.(ts|tsx)$
|
|
81
|
-
pass_filenames: false
|
|
82
|
-
|
|
83
|
-
{{/IF_NEXTJS}}
|
|
84
|
-
{{#IF_RUST}}
|
|
85
|
-
# Rust - Formatting and linting (check-only, use 'make fix' to auto-fix)
|
|
86
|
-
- repo: https://github.com/doublify/pre-commit-rust
|
|
87
|
-
rev: v1.0
|
|
88
|
-
hooks:
|
|
89
|
-
- id: fmt
|
|
90
|
-
args: [--manifest-path, Cargo.toml, --, --check]
|
|
91
|
-
- id: clippy
|
|
92
|
-
args: [--manifest-path, Cargo.toml, --, -D, warnings]
|
|
93
|
-
|
|
94
|
-
{{/IF_RUST}}
|
|
95
|
-
# Universal hooks - validation only (no auto-fix)
|
|
96
|
-
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
97
|
-
rev: v4.5.0
|
|
98
|
-
hooks:
|
|
99
|
-
- id: check-yaml
|
|
100
|
-
- id: check-json
|
|
101
|
-
- id: check-toml
|
|
102
|
-
- id: check-added-large-files
|
|
103
|
-
args: [--maxkb=1000]
|
|
104
|
-
- id: check-merge-conflict
|
|
105
|
-
- id: check-case-conflict
|
|
106
|
-
- id: detect-private-key
|