-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml
More file actions
125 lines (104 loc) · 3.5 KB
/
Copy pathTaskfile.yml
File metadata and controls
125 lines (104 loc) · 3.5 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
# Task (https://taskfile.dev) — the names, not the build.
#
# task check # the whole pre-PR gate, incrementally
# task build # the frost and frostd binaries
# task --list # everything below, with descriptions
#
# This file orchestrates nothing. `frost.toml` is the build — it declares what
# each stage reads and decides whether the stage has to run, which is the point
# of a repository that builds itself with its own build tool. Task is a name
# for a command line, and every task below is one line long for that reason. If
# a task here ever grows logic, that logic belongs in frost.toml instead.
#
# `scripts/check.sh` stays: it is the path that needs no frost, and CI takes
# it.
#
# FROST defaults to ./frostw, which runs the release named in .frost-version,
# downloading it once if this machine does not have it. Point it elsewhere to
# use a frost you just built:
#
# task check FROST=./target/release/frost
version: '3'
vars:
FROST: '{{.FROST | default "./frostw"}}'
tasks:
graphify-setup:
desc: "Install graphify and register its skill with Claude, Copilot and Codex"
cmds:
- "sh scripts/graphify.sh setup"
graphify-update:
desc: "Upgrade graphify, refresh the skill, and update the knowledge graph"
cmds:
- "sh scripts/graphify.sh update"
default:
desc: Run the whole pre-PR gate, skipping the stages whose inputs did not move
cmds:
- task: check
check:
desc: Run every stage — cargo test, clippy, fmt, the Python suite, the extension's
cmds:
- '{{.FROST}} test --all'
build:
desc: Build the frost and frostd binaries into .frost/self/debug/bin
cmds:
- '{{.FROST}} build binaries'
check:direct:
desc: The same gates without frost, for a machine that has none yet
cmds:
- scripts/check.sh
fmt:
desc: Check formatting
cmds:
- '{{.FROST}} test fmt'
clippy:
desc: Lint with clippy, warnings denied
cmds:
- '{{.FROST}} test clippy'
test:
desc: Run the Rust workspace test suite
cmds:
- '{{.FROST}} test rust_test'
test:python:
desc: Run the Python simulator and harness tests
cmds:
- '{{.FROST}} test python_test'
test:vscode:
desc: Run the VS Code extension's suite
cmds:
- '{{.FROST}} test vscode_test'
lint:
desc: Report frost.toml patterns that load fine and go wrong later
cmds:
- '{{.FROST}} lint'
# Not frost targets: they rewrite the tree rather than deciding something
# about it, and a cached "already formatted" would be a lie the moment
# anything else edited a file.
fix:
desc: Rewrite sources into rustfmt's canonical form
cmds:
- cargo fmt --all
fix:manifest:
desc: Rewrite every frost.toml into canonical form
cmds:
- '{{.FROST}} fmt'
why:
desc: Run the gate and say which input made each stage rerun
cmds:
- '{{.FROST}} test --all --explain'
report:
desc: Run the gate and write a self-contained HTML report of it
cmds:
- '{{.FROST}} test --all --report'
graph:
desc: Print the self-build dependency graph as DOT
cmds:
- '{{.FROST}} graph --dot'
clean:
desc: Remove frost's outputs and cached decisions for this workspace
cmds:
- '{{.FROST}} clean --cache'
bootstrap:
desc: Build frost with cargo alone, for a machine with neither frost nor network
cmds:
- cargo build --release --locked
- echo 'built ./target/release/frost — use it with: task check FROST=./target/release/frost'