|
1 | | -# Justfile for ECHIDNA |
2 | | -# PRIMARY build system (not Make) |
| 1 | +# echidna - Rust Development Tasks |
| 2 | +set shell := ["bash", "-uc"] |
| 3 | +set dotenv-load := true |
3 | 4 |
|
4 | | -# Default recipe |
| 5 | +project := "echidna" |
| 6 | + |
| 7 | +# Show all recipes |
5 | 8 | default: |
6 | | - @just --list |
| 9 | + @just --list --unsorted |
7 | 10 |
|
8 | | -# Build all components |
9 | | -build: build-rust build-julia build-ui |
10 | | - @echo "✓ ECHIDNA build complete" |
| 11 | +# Build debug |
| 12 | +build: |
| 13 | + cargo build |
11 | 14 |
|
12 | | -# Build Rust core |
13 | | -build-rust: |
14 | | - @echo "Building Rust core..." |
| 15 | +# Build release |
| 16 | +build-release: |
15 | 17 | cargo build --release |
16 | 18 |
|
17 | | -# Build Julia components |
18 | | -build-julia: |
19 | | - @echo "Building Julia components..." |
20 | | - julia --project=src/julia -e 'using Pkg; Pkg.instantiate()' |
21 | | - |
22 | | -# Build ReScript UI |
23 | | -build-ui: |
24 | | - @echo "Building ReScript UI..." |
25 | | - cd src/rescript && npm install && npm run res:build |
26 | | - |
27 | | -# Run all tests |
28 | | -test: test-rust test-julia test-proofs |
29 | | - @echo "✓ All tests passed" |
30 | | - |
31 | | -# Test Rust components |
32 | | -test-rust: |
33 | | - @echo "Testing Rust..." |
34 | | - cargo test --all-features |
35 | | - |
36 | | -# Test Julia ML components |
37 | | -test-julia: |
38 | | - @echo "Testing Julia..." |
39 | | - julia --project=src/julia test/runtests.jl |
40 | | - |
41 | | -# Test proof examples |
42 | | -test-proofs: |
43 | | - @echo "Testing proof validation..." |
44 | | - ./scripts/test-proofs.sh |
45 | | - |
46 | | -# Run all quality checkers |
47 | | -check: check-licenses check-security check-format check-julia |
48 | | - @echo "✓ All quality checks passed" |
49 | | - |
50 | | -# Check license compliance (REUSE) |
51 | | -check-licenses: |
52 | | - @echo "Checking license compliance..." |
53 | | - reuse lint |
54 | | - |
55 | | -# Security scanning (Trivy) |
56 | | -check-security: |
57 | | - @echo "Scanning for security issues..." |
58 | | - trivy fs --severity HIGH,CRITICAL . |
59 | | - |
60 | | -# Check code formatting |
61 | | -check-format: |
62 | | - @echo "Checking Rust formatting..." |
63 | | - cargo fmt -- --check |
64 | | - cargo clippy -- -D warnings |
| 19 | +# Run tests |
| 20 | +test: |
| 21 | + cargo test |
65 | 22 |
|
66 | | -# Check Julia code quality |
67 | | -check-julia: |
68 | | - @echo "Checking Julia code..." |
69 | | - julia --project=src/julia -e 'using Aqua, JET; ...' |
| 23 | +# Run tests verbose |
| 24 | +test-verbose: |
| 25 | + cargo test -- --nocapture |
70 | 26 |
|
71 | 27 | # Format code |
72 | 28 | fmt: |
73 | | - @echo "Formatting code..." |
74 | 29 | cargo fmt |
75 | 30 |
|
| 31 | +# Check formatting |
| 32 | +fmt-check: |
| 33 | + cargo fmt -- --check |
| 34 | + |
| 35 | +# Run clippy lints |
| 36 | +lint: |
| 37 | + cargo clippy -- -D warnings |
| 38 | + |
| 39 | +# Check without building |
| 40 | +check: |
| 41 | + cargo check |
| 42 | + |
76 | 43 | # Clean build artifacts |
77 | 44 | clean: |
78 | | - @echo "Cleaning build artifacts..." |
79 | 45 | cargo clean |
80 | | - rm -rf target/ |
81 | | - rm -rf src/julia/Manifest.toml |
82 | | - cd src/rescript && npm run res:clean |
83 | | - rm -rf src/rescript/node_modules |
84 | | - |
85 | | -# Build container (Podman) |
86 | | -container-build: |
87 | | - @echo "Building container with Podman..." |
88 | | - podman build -f Containerfile -t echidna:latest . |
89 | | - |
90 | | -# Run container |
91 | | -container-run: |
92 | | - @echo "Running ECHIDNA container..." |
93 | | - podman run -it echidna:latest |
94 | | - |
95 | | -# Deploy templates to Quill repo |
96 | | -deploy-templates: |
97 | | - @echo "Deploying RSR/CCCP templates..." |
98 | | - ./scripts/deploy-templates.sh |
99 | | - |
100 | | -# Initialize project |
101 | | -setup: |
102 | | - @echo "Setting up ECHIDNA project..." |
103 | | - ./scripts/setup.sh |
104 | | - |
105 | | -# Customize placeholders |
106 | | -customize: |
107 | | - @echo "Customizing template placeholders..." |
108 | | - ./scripts/customize.sh |
109 | | - |
110 | | -# Run proof examples for all provers |
111 | | -proof-examples PROVER="all": |
112 | | - @echo "Running proof examples for {{PROVER}}..." |
113 | | - ./scripts/run-proofs.sh {{PROVER}} |
114 | | - |
115 | | -# Benchmark neural solver |
116 | | -bench: |
117 | | - @echo "Running benchmarks..." |
118 | | - cargo bench |
119 | | - |
120 | | -# Generate documentation |
121 | | -docs: |
122 | | - @echo "Generating documentation..." |
| 46 | + |
| 47 | +# Run the project |
| 48 | +run *ARGS: |
| 49 | + cargo run -- {{ARGS}} |
| 50 | + |
| 51 | +# Generate docs |
| 52 | +doc: |
123 | 53 | cargo doc --no-deps --open |
124 | | - julia --project=src/julia -e 'using Documenter; ...' |
125 | | - |
126 | | -# Development server |
127 | | -dev: |
128 | | - @echo "Starting development server..." |
129 | | - cargo watch -x 'run --bin echidna' |
130 | | - |
131 | | -# Development server for UI |
132 | | -dev-ui: |
133 | | - @echo "Starting ReScript UI development server..." |
134 | | - cd src/rescript && npm run dev |
135 | | - |
136 | | -# Build and serve UI |
137 | | -serve-ui: |
138 | | - @echo "Serving ReScript UI..." |
139 | | - cd src/rescript && npm run serve |
140 | | - |
141 | | -# Watch ReScript compilation |
142 | | -watch-ui: |
143 | | - @echo "Watching ReScript files..." |
144 | | - cd src/rescript && npm run res:dev |
145 | | - |
146 | | -# Install development dependencies |
147 | | -install-dev-deps: |
148 | | - @echo "Installing development dependencies..." |
149 | | - cargo install cargo-watch |
150 | | - cargo install wasm-pack |
151 | | - julia --project=src/julia -e 'using Pkg; Pkg.add(["Aqua", "JET", "Coverage"])' |
| 54 | + |
| 55 | +# Update dependencies |
| 56 | +update: |
| 57 | + cargo update |
| 58 | + |
| 59 | +# Audit dependencies |
| 60 | +audit: |
| 61 | + cargo audit |
| 62 | + |
| 63 | +# All checks before commit |
| 64 | +pre-commit: fmt-check lint test |
| 65 | + @echo "All checks passed!" |
0 commit comments