Repository navigation
Expand file tree
/
Copy pathJustfile
More file actions
159 lines (139 loc) · 5.82 KB
/
Copy pathJustfile
File metadata and controls
159 lines (139 loc) · 5.82 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
# GrimRepo Scripts - Task Automation (ReScript + WASM)
# Install just: https://github.com/casey/just
# List all available recipes
import? "contractile.just"
default:
@just --list
# Build ReScript to JavaScript
build-rescript:
@echo "🔨 Building ReScript..."
rescript build
# Watch mode for ReScript
watch-rescript:
@echo "👀 Watching ReScript files..."
rescript build -w
# Clean build artifacts
clean:
@echo "🧹 Cleaning build artifacts..."
rescript clean
rm -rf lib/*.bs.js src/*.bs.js
# Build everything
build: build-rescript
@echo "✅ Build complete!"
# Format ReScript code
format:
@echo "✨ Formatting ReScript code..."
rescript format -all
# Count lines of code
loc:
@echo "📏 Counting lines of ReScript code..."
@find src -name '*.res' -exec wc -l {} + | tail -n 1
# Show project statistics
stats:
@echo "📊 Project Statistics:"
@echo ""
@echo "ReScript Files:"
@find src -name '*.res' | wc -l
@echo ""
@echo "JavaScript Files:"
@find lib -name '*.js' | wc -l
@echo ""
@echo "Lines of ReScript:"
@just loc
# Verify RSR Bronze compliance
verify-rsr:
@echo "🏅 Verifying RSR Bronze Compliance..."
@echo ""
@echo "✅ Checking documentation files..."
@test -f README.md && echo " ✓ README.md" || echo " ✗ README.md"
@test -f LICENSE.txt && echo " ✓ LICENSE.txt" || echo " ✗ LICENSE.txt"
@test -f SECURITY.md && echo " ✓ SECURITY.md" || echo " ✗ SECURITY.md"
@test -f CONTRIBUTING.md && echo " ✓ CONTRIBUTING.md" || echo " ✗ CONTRIBUTING.md"
@test -f CODE_OF_CONDUCT.md && echo " ✓ CODE_OF_CONDUCT.md" || echo " ✗ CODE_OF_CONDUCT.md"
@test -f MAINTAINERS.md && echo " ✓ MAINTAINERS.md" || echo " ✗ MAINTAINERS.md"
@test -f CHANGELOG.md && echo " ✓ CHANGELOG.md" || echo " ✗ CHANGELOG.md"
@echo ""
@echo "✅ Checking .well-known directory..."
@test -f .well-known/security.txt && echo " ✓ security.txt" || echo " ✗ security.txt"
@test -f .well-known/ai.txt && echo " ✓ ai.txt" || echo " ✗ ai.txt"
@test -f .well-known/humans.txt && echo " ✓ humans.txt" || echo " ✗ humans.txt"
@echo ""
@echo "✅ Checking build system..."
@test -f bsconfig.json && echo " ✓ bsconfig.json" || echo " ✗ bsconfig.json"
@test -f justfile && echo " ✓ justfile" || echo " ✗ justfile"
@test -f flake.nix && echo " ✓ flake.nix" || echo " ✗ flake.nix"
@echo ""
@echo "✅ Checking CI/CD..."
@test -f .gitlab-ci.yml && echo " ✓ .gitlab-ci.yml" || echo " ✗ .gitlab-ci.yml"
@echo ""
@echo "✅ Checking ReScript source..."
@test -d src && echo " ✓ src/" || echo " ✗ src/"
@test -f src/GrimRepo.res && echo " ✓ src/GrimRepo.res" || echo " ✗ src/GrimRepo.res"
@echo ""
@echo "🎯 RSR Compliance Check Complete!"
# Development mode
dev: build
@echo "🚀 Development build complete"
# Reinstall dependencies
reinstall: clean
@echo "📦 Reinstalling ReScript..."
@echo "Run: npm install -g rescript"
# 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"
# Self-diagnostic — checks dependencies, permissions, paths
doctor:
@echo "Running diagnostics for grim-repo..."
@echo "Checking required tools..."
@command -v just >/dev/null 2>&1 && echo " [OK] just" || echo " [FAIL] just not found"
@command -v git >/dev/null 2>&1 && echo " [OK] git" || echo " [FAIL] git not found"
@echo "Checking for hardcoded paths..."
@grep -rn '$HOME\|$ECLIPSE_DIR' --include='*.rs' --include='*.ex' --include='*.res' --include='*.gleam' --include='*.sh' . 2>/dev/null | head -5 || echo " [OK] No hardcoded paths"
@echo "Diagnostics complete."
# Auto-repair common issues
heal:
@echo "Attempting auto-repair for grim-repo..."
@echo "Fixing permissions..."
@find . -name "*.sh" -exec chmod +x {} \; 2>/dev/null || true
@echo "Cleaning stale caches..."
@rm -rf .cache/stale 2>/dev/null || true
@echo "Repair complete."
# Guided tour of key features
tour:
@echo "=== grim-repo Tour ==="
@echo ""
@echo "1. Project structure:"
@ls -la
@echo ""
@echo "2. Available commands: just --list"
@echo ""
@echo "3. Read README.adoc for full overview"
@echo "4. Read EXPLAINME.adoc for architecture decisions"
@echo "5. Run 'just doctor' to check your setup"
@echo ""
@echo "Tour complete! Try 'just --list' to see all available commands."
# Open feedback channel with diagnostic context
help-me:
@echo "=== grim-repo Help ==="
@echo "Platform: $(uname -s) $(uname -m)"
@echo "Shell: $SHELL"
@echo ""
@echo "To report an issue:"
@echo " https://github.com/hyperpolymath/grim-repo/issues/new"
@echo ""
@echo "Include the output of 'just doctor' in your report."
# Print the current CRG grade (reads from READINESS.md '**Current Grade:** X' line)
crg-grade:
@grade=$$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' READINESS.md 2>/dev/null | head -1); \
[ -z "$$grade" ] && grade="X"; \
echo "$$grade"
# Generate a shields.io badge markdown for the current CRG grade
# Looks for '**Current Grade:** X' in READINESS.md; falls back to X
crg-badge:
@grade=$$(grep -oP '(?<=\*\*Current Grade:\*\* )[A-FX]' READINESS.md 2>/dev/null | head -1); \
[ -z "$$grade" ] && grade="X"; \
case "$$grade" in \
A) color="brightgreen" ;; B) color="green" ;; C) color="yellow" ;; \
D) color="orange" ;; E) color="red" ;; F) color="critical" ;; \
*) color="lightgrey" ;; esac; \
echo "[](https://github.com/hyperpolymath/standards/tree/main/component-readiness-grades)"