Skip to content

Commit 65a318b

Browse files
committed
refactor(tooling): Overhaul Justfile copying from decasify
1 parent af1dd2d commit 65a318b

File tree

1 file changed

+65
-29
lines changed

1 file changed

+65
-29
lines changed

Justfile

Lines changed: 65 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,78 @@
1-
set ignore-comments := true
1+
cargo := require('cargo')
2+
cargo-set-version := require('cargo-set-version')
3+
gh := require('gh')
4+
git := require('git')
5+
gpg := require('gpg')
6+
just := just_executable()
7+
make := require('make')
8+
taplo := require('taplo')
9+
10+
set script-interpreter := ["zsh", "+o", "nomatch", "-eu"]
211
set shell := ["zsh", "+o", "nomatch", "-ecu"]
12+
set positional-arguments := true
313
set unstable := true
4-
set script-interpreter := ["zsh", "+o", "nomatch", "-eu"]
5-
6-
_default:
7-
@just --list --unsorted
814

15+
[default]
916
[private]
17+
@list:
18+
{{ just }} --list --unsorted
19+
20+
nuke-n-pave:
21+
{{ git }} clean -dxff -e .husky -e target -e completions
22+
./bootstrap.sh
23+
24+
dev-conf: nuke-n-pave
25+
./configure --enable-developer-mode --enable-debug
26+
{{ make }}
27+
28+
rel-conf: nuke-n-pave
29+
./configure --enable-developer-mode
30+
{{ make }}
31+
32+
[parallel]
33+
build:
34+
{{ make }} $0
35+
36+
check:
37+
{{ make }} $0
38+
39+
lint:
40+
{{ make }} $0
41+
42+
perfect:
43+
{{ make }} build check lint
44+
1045
[doc('Block execution if Git working tree isn’t pristine.')]
46+
[private]
1147
pristine:
12-
# Ensure there are no changes in staging
13-
git diff-index --quiet --cached HEAD || exit 1
14-
# Ensure there are no changes in the working tree
15-
git diff-files --quiet || exit 1
48+
# Make sure Git's status cache is warmed up
49+
{{ git }} diff --shortstat
50+
# Ensure there are no changes in staging
51+
{{ git }} diff-index --quiet --cached HEAD || exit 1
52+
# Ensure there are no changes in the working tree
53+
{{ git }} diff-files --quiet || exit 1
1654

17-
[private]
1855
[doc('Block execution if we don’t have access to private keys.')]
56+
[private]
1957
keys:
20-
gpg -a --sign > /dev/null <<< "test"
58+
{{ gpg }} -a --sign > /dev/null <<< "test"
2159

2260
release semver: pristine keys
23-
cargo-set-version set-version {{semver}}
24-
taplo format Cargo.toml
25-
sed -i -e "/^git-warp-time =/s/\".*\"/\"${${:-{{semver}}}%\.*}\"/" README.md
26-
sed -i -e "/image:/s/:v.*/:v{{semver}}/" action.yml
27-
make SEMVER={{semver}} CHANGELOG.md git-warp-time-{{semver}}.md -B
28-
git add Cargo.{toml,lock} README.md CHANGELOG.md action.yml
29-
git commit -m "chore: Release v{{semver}}"
30-
git tag -s v{{semver}} -F git-warp-time-{{semver}}.md
31-
cargo build
32-
git diff-files --quiet || exit 1
33-
./config.status && make
34-
git push --atomic origin master v{{semver}}
35-
cargo publish --locked
61+
{{ cargo-set-version }} set-version {{ semver }}
62+
{{ taplo }} format Cargo.toml
63+
sed -i -e "/^git-warp-time =/s/\".*\"/\"${${:-{{ semver }}}%\.*}\"/" README.md
64+
sed -i -e "/image:/s/:v.*/:v{{ semver }}/" action.yml
65+
{{ make }} SEMVER={{ semver }} CHANGELOG.md git-warp-time-{{ semver }}.md -B
66+
{{ git }} add Cargo.{toml,lock} README.md CHANGELOG.md action.yml
67+
{{ git }} commit -m "chore: Release v{{ semver }}"
68+
{{ git }} tag -s v{{ semver }} -F git-warp-time-{{ semver }}.md
69+
{{ just }} build
70+
{{ git }} diff-files --quiet || exit 1
71+
./config.status && {{ make }}
72+
{{ git }} push --atomic origin master v{{ semver }}
73+
{{ cargo }} publish --locked
3674

3775
post-release semver: keys
38-
gh release download v{{semver}}
39-
ls git-warp-time-{{semver}}.{tar.zst,zip} | xargs -n1 gpg -a --detach-sign
40-
gh release upload v{{semver}} git-warp-time-{{semver}}.{tar.zst,zip}.asc
41-
42-
# vim: set ft=just
76+
{{ gh }} release download v{{ semver }} --skip-existing
77+
ls git-warp-time-{{ semver }}.{tar.zst,zip} | xargs -n1 {{ gpg }} -a --detach-sign
78+
{{ gh }} release upload v{{ semver }} git-warp-time-{{ semver }}.{tar.zst,zip}.asc

0 commit comments

Comments
 (0)