-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy path.pre-commit-config.yaml
More file actions
230 lines (205 loc) · 6.63 KB
/
.pre-commit-config.yaml
File metadata and controls
230 lines (205 loc) · 6.63 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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
repos:
- hooks:
- id: check-merge-conflict
priority: 0
- id: check-symlinks
priority: 0
- id: mixed-line-ending
priority: 0
repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
- hooks:
# ------------------------------------------------------------------ priority 0
# Fast file-level checks: spellcheck, shell linting/formatting,
# Nix dead-code removal, IaC formatting, and schema validation.
# These run first because they are cheap and fix-fast.
# ------------------------------------------------------------------
- description: Runs spellcheck on markdown files
entry: cspell lint --no-progress --gitignore
fail_fast: true
files: \.(md|mdx)$
id: lint-spellcheck
language: system
name: Spellcheck
pass_filenames: true
priority: 0
- description: Runs shellcheck on shell scripts
entry: shellcheck
fail_fast: true
files: ^packages/(devshell|installer|infrastructure)/.*\.sh$
id: shellcheck
language: system
name: Shellcheck
pass_filenames: true
priority: 0
- description: Runs shfmt on shell scripts
entry: shfmt -w -i 2
fail_fast: true
files: ^packages/(devshell|installer|infrastructure)/.*\.sh$
id: shellfmt
language: system
name: Shell Format
pass_filenames: true
priority: 0
- description: Removes dead code from Nix files with deadnix
entry: deadnix --edit
exclude: (^|/)bun\.nix$
fail_fast: true
files: ^(flake\.nix|packages/(cli|devshell|local)/.*\.nix)$
id: deadnix
language: system
name: Deadnix
pass_filenames: true
priority: 0
- description: Runs hclfmt on HCL files
entry: terragrunt hcl fmt --file
fail_fast: true
files: ^packages/cli/.*\.hcl$
id: hcl-fmt
language: system
name: HCL Format
pass_filenames: true
priority: 0
- description: Runs tofu fmt on the infrastructure code
entry: tofu fmt
fail_fast: false
files: ^(packages/infrastructure|infrastructure)/.*\.tf$
id: tf-fmt
language: system
name: Tofu Format
pass_filenames: true
priority: 0
- description: Ensures all dependencies are pinned and consistent across packages
entry: ds-check-package-json
fail_fast: true
files: (^|/)package\.json$
id: check-package-json
language: system
name: Check Package JSON Consistency
pass_filenames: false
priority: 0
- description: Validates changelog log.yaml files against the JSON schema
entry: ds-validate-changelog
fail_fast: true
files: ^packages/website/src/content/changelog/.*/log\.yaml$
id: validate-changelog-schema
language: system
name: Validate Changelog Schema
pass_filenames: true
priority: 0
- description: Validates changelog review.yaml files against the JSON schema
entry: ds-validate-changelog-review
fail_fast: true
files: ^packages/website/src/content/changelog/.*/review\.yaml$
id: validate-changelog-review-schema
language: system
name: Validate Changelog Review Schema
pass_filenames: true
priority: 0
- description: Validates glossary term YAML files against the JSON schema
entry: ds-validate-glossary
fail_fast: true
files: ^packages/website/src/content/docs/.*/reference/glossary/_terms/.*\.yaml$
id: validate-glossary-schema
language: system
name: Validate Glossary Schema
pass_filenames: true
priority: 0
- description: Validates metadata.yaml against the JSON schema
entry: ds-validate-iac-metadata
fail_fast: true
files: ^packages/infrastructure/metadata\.yaml$
id: validate-metadata-schema
language: system
name: Validate Metadata Schema
pass_filenames: true
priority: 0
# ------------------------------------------------------------------ priority 1
# Nix fixers and doc generators.
# Runs after dead-code removal so statix sees clean files.
# ------------------------------------------------------------------
- description: Fixes Nix antipatterns with statix
entry: statix fix
exclude: (^|/)bun\.nix$
fail_fast: true
files: ^(flake\.nix|packages/(cli|devshell|local)/.*\.nix)$
id: statix
language: system
name: Statix
pass_filenames: false
priority: 1
- description: Generates terraform reference docs for changed modules
entry: ds-generate-tf-reference-hook
fail_fast: false
files: ^packages/infrastructure/[^/]+/
id: generate-tf-reference
language: system
name: Generate Terraform Reference
pass_filenames: true
priority: 1
# ------------------------------------------------------------------ priority 2
# Formatters and typecheckers.
# Nix formatting runs after statix fixes; TS typechecks run whole-project.
# ------------------------------------------------------------------
- description: Runs nixfmt on Nix files
entry: nixfmt
exclude: (^|/)bun\.nix$
fail_fast: true
files: ^(flake\.nix|packages/(cli|devshell|local)/.*\.nix)$
id: nixfmt
language: system
name: Nix Format
pass_filenames: true
priority: 2
- description: Runs a typecheck on the website code
entry: ds-typecheck-website
fail_fast: true
files: ^packages/website/
id: typecheck-website
language: system
name: Typecheck Website
pass_filenames: false
priority: 2
- description: Runs a typecheck on the CLI code
entry: ds-typecheck-cli
fail_fast: true
files: ^packages/cli/
id: typecheck-cli
language: system
name: Typecheck CLI
pass_filenames: false
priority: 2
# ------------------------------------------------------------------ priority 3
# Linters (ESLint). Run after typechecks so the type graph is valid.
# ------------------------------------------------------------------
- description: Runs linting for the website code
entry: ds-lint-website
fail_fast: true
files: ^packages/website/src/.*\.(ts|tsx|astro)$
id: lint-website
language: system
name: Lint Website
pass_filenames: true
priority: 3
- description: Runs linting for the CLI code
entry: ds-lint-cli
fail_fast: true
files: ^packages/cli/.*\.ts$
id: lint-cli
language: system
name: Lint CLI
pass_filenames: true
priority: 3
# ------------------------------------------------------------------ priority 4
# Tests. Run last — only after all formatting and linting passes.
# ------------------------------------------------------------------
- description: Runs bun tests for the CLI code
entry: ds-test-cli
fail_fast: true
files: ^packages/cli/.*\.ts$
id: test-cli
language: system
name: Test CLI
pass_filenames: true
priority: 4
repo: local