-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjustfile
More file actions
222 lines (170 loc) · 7.72 KB
/
justfile
File metadata and controls
222 lines (170 loc) · 7.72 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
# Conative Gating - Development Tasks
# Run `just --list` to see all available recipes
set shell := ["bash", "-uc"]
set dotenv-load := true
# Default recipe - show help
default:
@just --list
# ─────────────────────────────────────────────────────────────
# BUILD & TEST
# ─────────────────────────────────────────────────────────────
# Build in debug mode
build:
cargo build
# Build in release mode
build-release:
cargo build --release
# Run all tests
test:
cargo test --workspace
# Run tests with output
test-verbose:
cargo test --workspace -- --nocapture
# Run specific test
test-one NAME:
cargo test --workspace {{NAME}}
# ─────────────────────────────────────────────────────────────
# QUALITY & LINTING
# ─────────────────────────────────────────────────────────────
# Format all code
fmt:
cargo fmt --all
# Check formatting without changes
fmt-check:
cargo fmt --all -- --check
# Run clippy linter
lint:
cargo clippy --workspace -- -D warnings
# Run all quality checks
check: fmt-check lint test
@echo "All checks passed!"
# Fix common issues automatically
fix:
cargo fix --workspace --allow-dirty
cargo fmt --all
# ─────────────────────────────────────────────────────────────
# CLI OPERATIONS
# ─────────────────────────────────────────────────────────────
# Run the CLI (debug build)
run *ARGS:
cargo run -- {{ARGS}}
# Scan current directory
scan PATH=".":
cargo run -- scan {{PATH}}
# Scan with JSON output
scan-json PATH=".":
cargo run -- scan {{PATH}} --format json
# Check a file
check-file FILE:
cargo run -- check --file {{FILE}}
# Show policy
policy:
cargo run -- policy
# Show policy as JSON
policy-json:
cargo run -- policy --format json
# Dry run scan
dry-scan PATH=".":
cargo run -- --dry-run scan {{PATH}}
# ─────────────────────────────────────────────────────────────
# DOCUMENTATION
# ─────────────────────────────────────────────────────────────
# Generate man page
man:
cargo run -- man > docs/conative.1
# Generate shell completions
completions-bash:
cargo run -- completions bash > completions/conative.bash
completions-zsh:
cargo run -- completions zsh > completions/_conative
completions-fish:
cargo run -- completions fish > completions/conative.fish
# Generate all completions
completions: completions-bash completions-zsh completions-fish
@echo "Generated completions in completions/"
# Build documentation
docs:
cargo doc --workspace --no-deps --open
# ─────────────────────────────────────────────────────────────
# RELEASE & PACKAGING
# ─────────────────────────────────────────────────────────────
# Create release build
release: check build-release
@echo "Release build complete: target/release/conative"
# Package for distribution
package: release
mkdir -p dist
cp target/release/conative dist/
cp README.adoc dist/
cp LICENSE dist/
@echo "Package created in dist/"
# Install locally
install: build-release
cp target/release/conative ~/.local/bin/
@echo "Installed to ~/.local/bin/conative"
# ─────────────────────────────────────────────────────────────
# DEVELOPMENT UTILITIES
# ─────────────────────────────────────────────────────────────
# Watch for changes and rebuild
watch:
cargo watch -x build
# Watch and run tests on change
watch-test:
cargo watch -x test
# Clean build artifacts
clean:
cargo clean
# Show dependency tree
deps:
cargo tree
# Check for outdated dependencies
outdated:
cargo outdated
# Update dependencies
update:
cargo update
# ─────────────────────────────────────────────────────────────
# NICKEL POLICY
# ─────────────────────────────────────────────────────────────
# Validate Nickel policy
nickel-check:
nickel typecheck config/policy.ncl
# Export Nickel policy to JSON
nickel-export:
nickel export config/policy.ncl > config/policy.json
# ─────────────────────────────────────────────────────────────
# CI SIMULATION
# ─────────────────────────────────────────────────────────────
# Run full CI pipeline locally
ci: fmt-check lint test build-release
@echo "CI pipeline complete!"
# ─────────────────────────────────────────────────────────────
# HELP & INFO
# ─────────────────────────────────────────────────────────────
# Show version
version:
@cargo run -- --version
# Show CLI help
help:
@cargo run -- --help
# Show help for a specific command
help-cmd CMD:
@cargo run -- {{CMD}} --help
# ─────────────────────────────────────────────────────────────
# REVERSIBILITY NOTES
# ─────────────────────────────────────────────────────────────
#
# All recipes in this justfile are non-destructive except:
# - clean: removes target/ (rebuild with `just build`)
# - install: copies to ~/.local/bin (remove manually)
# - fix: modifies source files (use git to revert)
#
# To see what a recipe would do, use `just --dry-run RECIPE`
# ─────────────────────────────────────────────────────────────
# [AUTO-GENERATED] Multi-arch / RISC-V target
build-riscv:
@echo "Building for RISC-V..."
cross build --target riscv64gc-unknown-linux-gnu
# Run panic-attacker pre-commit scan
assail:
@command -v panic-attack >/dev/null 2>&1 && panic-attack assail . || echo "panic-attack not found — install from https://github.com/hyperpolymath/panic-attacker"