-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy path.pre-commit-config.yaml
More file actions
166 lines (151 loc) · 5.05 KB
/
.pre-commit-config.yaml
File metadata and controls
166 lines (151 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-merge-conflict
priority: 0
- id: check-symlinks
priority: 0
- id: mixed-line-ending
priority: 0
- repo: local
hooks:
# Priority 0: Fast, file-level checks (run concurrently)
- id: lint-spellcheck
name: Spellcheck
entry: cspell lint --no-progress --gitignore
language: system
files: \.(md|mdx)$
pass_filenames: true
description: "Runs spellcheck on markdown files"
fail_fast: true
priority: 0
- id: shellcheck
name: Shellcheck
entry: shellcheck
language: system
files: ^packages/(nix|installer|infrastructure)/.*\.sh$
pass_filenames: true
description: "Runs shellcheck on shell scripts"
fail_fast: true
priority: 0
- id: shellfmt
name: Shell Format
entry: shfmt -w -i 2
language: system
files: ^packages/(nix|installer|infrastructure)/.*\.sh$
pass_filenames: true
description: "Runs shfmt on shell scripts"
fail_fast: true
priority: 0
- id: nixfmt
name: Nix Format
entry: nixfmt
language: system
files: ^packages/(nix|cli)/.*\.nix$
exclude: (^|/)bun\.nix$
pass_filenames: true
description: "Runs nixfmt on Nix files"
fail_fast: true
priority: 0
- id: hcl-fmt
name: HCL Format
entry: terragrunt hcl fmt --file
language: system
files: ^packages/cli/.*\.hcl$
pass_filenames: true
description: "Runs hclfmt on HCL files"
fail_fast: true
priority: 0
- id: tf-fmt
name: Tofu Format
entry: tofu fmt
language: system
files: ^(packages/infrastructure|infrastructure)/.*\.tf$
pass_filenames: true
description: "Runs tofu fmt on the infrastructure code"
fail_fast: false
priority: 0
- id: check-package-json
name: Check Package JSON Consistency
entry: bun run packages/nix/localDevShell/scripts/precommit-check-package-json.ts
language: system
files: (^|/)package\.json$
pass_filenames: false
description: "Ensures all dependencies are pinned and consistent across packages"
fail_fast: true
priority: 0
- id: validate-changelog-schema
name: Validate Changelog Schema
entry: ds-validate-changelog
language: system
files: ^packages/website/src/content/changelog/.*/log\.yaml$
pass_filenames: true
description: "Validates changelog log.yaml files against the JSON schema"
fail_fast: true
priority: 0
- id: validate-changelog-review-schema
name: Validate Changelog Review Schema
entry: ds-validate-changelog-review
language: system
files: ^packages/website/src/content/changelog/.*/review\.yaml$
pass_filenames: true
description: "Validates changelog review.yaml files against the JSON schema"
fail_fast: true
priority: 0
- id: validate-metadata-schema
name: Validate Metadata Schema
entry: ds-validate-iac-metadata
language: system
files: ^packages/infrastructure/metadata\.yaml$
pass_filenames: true
description: "Validates metadata.yaml against the JSON schema"
fail_fast: true
priority: 0
# Priority 1: Heavy project-level checks (run concurrently)
- id: typecheck-website
name: Typecheck Website
entry: precommit-typecheck-website
language: system
files: ^packages/website/
pass_filenames: false
description: "Runs a typecheck on the website code"
fail_fast: true
priority: 1
- id: lint-website
name: Lint Website
entry: precommit-lint-website
language: system
files: ^packages/website/src/.*\.(ts|tsx|astro)$
pass_filenames: true
description: "Runs linting for the website code"
fail_fast: true
priority: 1
- id: typecheck-cli
name: Typecheck CLI
entry: precommit-typecheck-cli
language: system
files: ^packages/cli/
pass_filenames: false
description: "Runs a typecheck on the CLI code"
fail_fast: true
priority: 1
- id: lint-cli
name: Lint CLI
entry: precommit-lint-cli
language: system
files: ^packages/cli/.*\.ts$
pass_filenames: true
description: "Runs linting for the CLI code"
fail_fast: true
priority: 1
# Priority 2: Generators (run after all checks pass)
- id: generate-tf-reference
name: Generate Terraform Reference
entry: precommit-generate-tf-reference
language: system
files: ^packages/infrastructure/[^/]+/
pass_filenames: true
description: "Generates terraform reference docs for changed modules"
fail_fast: false
priority: 2