commit 1c18143de8ce8c88e3a0e1b303d93e8e458fbb42 from: mtmn date: Fri Aug 7 20:49:09 2026 UTC redo to knit commit - 68a0e61661c30964596d7a026d7b80157700f492 commit + 1c18143de8ce8c88e3a0e1b303d93e8e458fbb42 blob - e07056d9626b1a47daeff48629abd1b53732c20c blob + 581075845b1c4c214c56fed9f07a5d7fbb525804 --- .gitignore +++ .gitignore @@ -1,7 +1,7 @@ -# redo -.redo/ +# knit +.knit/ +.venv-stamp bin/* -!bin/*.do # python .venv/ # zig blob - f56f2198a67ba8444edb02005b53a3795a7fed34 (mode 644) blob + /dev/null --- all.do +++ /dev/null @@ -1,9 +0,0 @@ -exec >&2 -redo-ifchange \ - bin/dam bin/lastfm_rs bin/plants \ - bin/pmn bin/pracomer bin/speediness \ - bin/wrd \ - bin/mpd_add_to_playlist bin/mpd_add_to_queue bin/mpd_edit_queue \ - bin/mpd_update_library bin/mpd_update_queue \ - bin/diggah bin/lazymaster bin/nts bin/shuffle bin/kundali \ - bin/hue bin/reflink-snap blob - d775f2e089d7c96a17209aea5723657c5a70c7f2 (mode 644) blob + /dev/null --- bin/dam.do +++ /dev/null @@ -1,5 +0,0 @@ -exec >&2 -redo-ifchange ../Cargo.toml ../Cargo.lock ../rust-toolchain.toml \ - ../.cargo/config.toml ../dam/Cargo.toml $(find ../dam/src -name '*.rs') -(cd .. && cargo build --release -p dam) -cp ../target/release/dam "$3" blob - d5ee820eda03940a9e1238a29796744995ef1f3a (mode 644) blob + /dev/null --- bin/default.do +++ /dev/null @@ -1,39 +0,0 @@ -# Catch-all: builds the mpd_* C binaries from ../mpd/.c. -exec >&2 -case "$1" in -mpd_*) ;; -*) - echo "bin/default.do: no rule to build '$1'" - exit 1 - ;; -esac -redo-ifchange "../mpd/$1.c" -/usr/bin/cc \ - -Wall \ - -Wextra \ - -O2 \ - -march=native \ - -mtune=native \ - -fanalyzer \ - -Wshadow \ - -fstack-protector-strong \ - -D_FORTIFY_SOURCE=2 \ - -fPIE \ - -Wformat \ - -Werror=format-security \ - -Wnull-dereference \ - -Wdangling-pointer \ - -Wtrampolines \ - -Walloca \ - -Wcast-align=strict \ - -Wdate-time \ - -Wfloat-equal \ - -Wpointer-arith \ - -Wredundant-decls \ - -Wswitch-default \ - -Wvla \ - -Wwrite-strings \ - -o "$3" "../mpd/$1.c" \ - -lmpdclient \ - -Wl,-z,relro \ - -Wl,-z,now blob - 2bd54e1990cb50ffdac8f4cc5334354dcd236043 (mode 644) blob + /dev/null --- bin/diggah.do +++ /dev/null @@ -1,8 +0,0 @@ -exec >&2 -redo-ifchange venv-stamp ../diggah/diggah.py -root=$(cd .. && pwd) -cat > "$3" <&2 -redo-ifchange ../hue/bin/hue $(find ../hue/lib -name '*.rb') -root=$(cd .. && pwd) -cat > "$3" <&2 -redo-ifchange venv-stamp ../kundali/kundali.py -root=$(cd .. && pwd) -cat > "$3" <&2 -redo-ifchange ../Cargo.toml ../Cargo.lock ../rust-toolchain.toml \ - ../.cargo/config.toml ../lastfm_rs/Cargo.toml $(find ../lastfm_rs/src -name '*.rs') -(cd .. && cargo build --release -p lastfm_rs) -cp ../target/release/lastfm_rs "$3" blob - 7bbcf73c24355bb246bf7a5cb8ec94528f67b86c (mode 644) blob + /dev/null --- bin/lazymaster.do +++ /dev/null @@ -1,8 +0,0 @@ -exec >&2 -redo-ifchange venv-stamp ../lazymaster/lazymaster.py -root=$(cd .. && pwd) -cat > "$3" <&2 -redo-ifchange venv-stamp ../nts/nts.py -root=$(cd .. && pwd) -cat > "$3" <&2 -redo-ifchange ../Cargo.toml ../Cargo.lock ../rust-toolchain.toml \ - ../.cargo/config.toml ../plants/Cargo.toml $(find ../plants/src -name '*.rs') -(cd .. && cargo build --release -p plants) -cp ../target/release/plants "$3" blob - 91e5ae3ecd900a6b97c1fd34165fc73b7501745c (mode 644) blob + /dev/null --- bin/pmn.do +++ /dev/null @@ -1,4 +0,0 @@ -exec >&2 -redo-ifchange ../pmn/build.zig ../pmn/build.zig.zon $(find ../pmn/src -name '*.zig') -(cd ../pmn && zig build -Doptimize=ReleaseSafe) -cp ../pmn/zig-out/bin/pmn "$3" blob - 3eb653776af5ff48fcf423d11b787cd4cf195479 (mode 644) blob + /dev/null --- bin/pracomer.do +++ /dev/null @@ -1,4 +0,0 @@ -exec >&2 -redo-ifchange ../pracomer/build.zig ../pracomer/build.zig.zon $(find ../pracomer/src -name '*.zig') -(cd ../pracomer && zig build -Doptimize=ReleaseSafe) -cp ../pracomer/zig-out/bin/pracomer "$3" blob - 7055fe62b65958c49a27283067c7291b9d0c3dc1 (mode 644) blob + /dev/null --- bin/reflink-snap.do +++ /dev/null @@ -1,8 +0,0 @@ -exec >&2 -redo-ifchange ../reflink-snap/reflink-snap.rb -root=$(cd .. && pwd) -cat > "$3" <&2 -redo-ifchange venv-stamp ../shuffle/shuffle.py -root=$(cd .. && pwd) -cat > "$3" <&2 -redo-ifchange ../speediness/build.zig ../speediness/build.zig.zon $(find ../speediness/src -name '*.zig') -(cd ../speediness && zig build -Doptimize=ReleaseSafe) -cp ../speediness/zig-out/bin/speediness "$3" blob - c51a12ccdf8fe21a8683d33fae4b3f0323710248 (mode 644) blob + /dev/null --- bin/venv-stamp.do +++ /dev/null @@ -1,5 +0,0 @@ -exec >&2 -redo-ifchange ../requirements.txt -python3 -m venv ../.venv -../.venv/bin/pip install --quiet --require-hashes -r ../requirements.txt -sha256sum ../requirements.txt > "$3" blob - 40ce77ec8a2d932ba532421de8b05aa2b8f083c2 (mode 644) blob + /dev/null --- bin/wrd.do +++ /dev/null @@ -1,7 +0,0 @@ -exec >&2 -redo-ifchange ../wrd/go.mod $(find ../wrd -name '*.go') -case "$3" in -/*) out=$3 ;; -*) out=$PWD/$3 ;; -esac -(cd ../wrd && go build -o "$out" .) blob - /dev/null blob + 470a9d2fbe8cb274400e2916aa7169d44a728d57 (mode 644) --- /dev/null +++ knitfile @@ -0,0 +1,94 @@ +knit = require("knit") + +root = knit.abs(".") + +cflags := -Wall -Wextra -O2 -march=native -mtune=native -fanalyzer -Wshadow -fstack-protector-strong -D_FORTIFY_SOURCE=2 -fPIE -Wformat -Werror=format-security -Wnull-dereference -Wdangling-pointer -Wtrampolines -Walloca -Wcast-align=strict -Wdate-time -Wfloat-equal -Wpointer-arith -Wredundant-decls -Wswitch-default -Wvla -Wwrite-strings +ldflags := -lmpdclient -Wl,-z,relro -Wl,-z,now +cc := /usr/bin/cc + +hue_rb := hue/lib/hue.rb hue/lib/hue/bridge.rb hue/lib/hue/bulb.rb hue/lib/hue/cli.rb hue/lib/hue/colors.rb hue/lib/hue/animations/candle.rb hue/lib/hue/animations/sunrise.rb hue/lib/hue/cli/command.rb hue/lib/hue/colors/color.rb hue/lib/hue/colors/color_temperature.rb hue/lib/hue/colors/hue_saturation.rb hue/lib/hue/colors/rgb.rb hue/lib/hue/colors/xy.rb hue/lib/hue/config/abstract.rb hue/lib/hue/config/application.rb hue/lib/hue/config/bridge.rb hue/lib/hue/extensions/bridge.rb hue/lib/hue/extensions/bulb.rb hue/lib/hue/extensions/hue.rb hue/lib/hue/utilities/indentation.rb hue/lib/hue/cli/commands/delete.rb hue/lib/hue/cli/commands/light.rb hue/lib/hue/cli/commands/lights.rb hue/lib/hue/cli/commands/register.rb hue/lib/hue/cli/processors/light_state_alias.rb + +return b{ +$ bin/dam: Cargo.toml Cargo.lock rust-toolchain.toml dam/Cargo.toml $(knit.glob("dam/src/*.rs")) + cargo build --release -p dam + cp target/release/dam $output + +$ bin/lastfm_rs: Cargo.toml Cargo.lock rust-toolchain.toml lastfm_rs/Cargo.toml $(knit.glob("lastfm_rs/src/*.rs")) + cargo build --release -p lastfm_rs + cp target/release/lastfm_rs $output + +$ bin/plants: Cargo.toml Cargo.lock rust-toolchain.toml plants/Cargo.toml $(knit.glob("plants/src/*.rs")) + cargo build --release -p plants + cp target/release/plants $output + +$ bin/pmn: pmn/build.zig pmn/build.zig.zon $(knit.glob("pmn/src/*.zig")) + cd pmn && zig build -Doptimize=ReleaseSafe + cp pmn/zig-out/bin/pmn $output + +$ bin/pracomer: pracomer/build.zig pracomer/build.zig.zon $(knit.glob("pracomer/src/*.zig")) + cd pracomer && zig build -Doptimize=ReleaseSafe + cp pracomer/zig-out/bin/pracomer $output + +$ bin/speediness: speediness/build.zig speediness/build.zig.zon $(knit.glob("speediness/src/*.zig")) + cd speediness && zig build -Doptimize=ReleaseSafe + cp speediness/zig-out/bin/speediness $output + +$ bin/wrd: wrd/go.mod $(knit.glob("wrd/*.go")) + cd wrd && go build -o $(root)/$output . + +$ bin/mpd_add_to_playlist: mpd/mpd_add_to_playlist.c + $cc $cflags -o $output $input $ldflags + +$ bin/mpd_add_to_queue: mpd/mpd_add_to_queue.c + $cc $cflags -o $output $input $ldflags + +$ bin/mpd_edit_queue: mpd/mpd_edit_queue.c + $cc $cflags -o $output $input $ldflags + +$ bin/mpd_update_library: mpd/mpd_update_library.c + $cc $cflags -o $output $input $ldflags + +$ bin/mpd_update_queue: mpd/mpd_update_queue.c + $cc $cflags -o $output $input $ldflags + +$ .venv-stamp: requirements.txt + python3 -m venv .venv + .venv/bin/pip install --quiet --require-hashes -r requirements.txt + sha256sum requirements.txt > $output + +$ bin/diggah: .venv-stamp diggah/diggah.py + printf '#!/bin/sh\nexec "%s/.venv/bin/python" "%s/diggah/diggah.py" "$$@"\n' $root $root > $output + chmod +x $output + +$ bin/kundali: .venv-stamp kundali/kundali.py + printf '#!/bin/sh\nexec "%s/.venv/bin/python" "%s/kundali/kundali.py" "$$@"\n' $root $root > $output + chmod +x $output + +$ bin/lazymaster: .venv-stamp lazymaster/lazymaster.py + printf '#!/bin/sh\nexec "%s/.venv/bin/python" "%s/lazymaster/lazymaster.py" "$$@"\n' $root $root > $output + chmod +x $output + +$ bin/nts: .venv-stamp nts/nts.py + printf '#!/bin/sh\nexec "%s/.venv/bin/python" "%s/nts/nts.py" "$$@"\n' $root $root > $output + chmod +x $output + +$ bin/shuffle: .venv-stamp shuffle/shuffle.py + printf '#!/bin/sh\nexec "%s/.venv/bin/python" "%s/shuffle/shuffle.py" "$$@"\n' $root $root > $output + chmod +x $output + +$ bin/hue: hue/bin/hue $hue_rb + printf '#!/bin/sh\nexec ruby -I"%s/hue/lib" "%s/hue/bin/hue" "$$@"\n' $root $root > $output + chmod +x $output + +$ bin/reflink-snap: reflink-snap/reflink-snap.rb + printf '#!/bin/sh\nexec ruby "%s/reflink-snap/reflink-snap.rb" "$$@"\n' $root > $output + chmod +x $output + +$ all:VB: bin/dam bin/lastfm_rs bin/plants \ + bin/pmn bin/pracomer bin/speediness \ + bin/wrd \ + bin/mpd_add_to_playlist bin/mpd_add_to_queue bin/mpd_edit_queue \ + bin/mpd_update_library bin/mpd_update_queue \ + bin/diggah bin/lazymaster bin/nts bin/shuffle bin/kundali \ + bin/hue bin/reflink-snap +} blob - 990076b8d8a33b648cbdc7daad015cd4cbfaf95f blob + c431e972f2bea551cee2dd3b6b9584e3a2dc1ce0 --- justfile +++ justfile @@ -1,4 +1,4 @@ -redo := "redo" +knit := "knit" cargo := "cargo" deploy_dir := home_directory() / ".local/bin" @@ -12,15 +12,15 @@ default: # Build every tool all: - {{ redo }} all + {{ knit }} all # Build one or more tools, e.g. just build lazymaster build +targets: - {{ redo }} {{ "bin/" + replace(targets, " ", " bin/") }} + {{ knit }} {{ "bin/" + replace(targets, " ", " bin/") }} # Build and run a tool run target *args: - @{{ redo }} bin/{{ target }} && ./bin/{{ target }} {{ args }} + @{{ knit }} bin/{{ target }} && ./bin/{{ target }} {{ args }} # Build and copy tools to ~/.local/bin deploy +targets: @@ -28,7 +28,7 @@ deploy +targets: @for target in {{ targets }}; do \ case "$target" in mpd) bins="{{ mpd_bins }}" ;; *) bins="$target" ;; esac; \ for bin in $bins; do \ - {{ redo }} bin/"$bin" && \ + {{ knit }} bin/"$bin" && \ install -m 755 bin/"$bin" {{ deploy_dir }}/ && \ echo "deployed $bin to {{ deploy_dir }}"; \ done; \ @@ -50,7 +50,7 @@ rustfmt: # Update `requirements.txt` lockfile from requirements.in pip-update: - {{ redo }} bin/venv-stamp + {{ knit }} .venv-stamp .venv/bin/pip install --quiet pip-tools .venv/bin/pip-compile --generate-hashes --strip-extras requirements.in -o requirements.txt @@ -62,5 +62,5 @@ cargo-lockfile: clean: {{ cargo }} clean for dir in pmn pracomer speediness; do rm -rf "$dir"/zig-out "$dir"/.zig-cache; done - find bin -type f ! -name '*.do' -delete - rm -rf .venv .redo + find bin -type f -delete + rm -rf .venv .knit .venv-stamp