knitfile (6889B)
1 local knit = require("knit") 2 3 local root = knit.abs(".") 4 local deploy_dir = cli.deploy_dir or env.HOME .. "/.local/bin" 5 6 rust_bins := bin/dam bin/lastfm_rs bin/plants 7 zig_bins := bin/pmn bin/pracomer bin/speediness 8 go_bins := bin/wrd 9 python_bins := bin/diggah bin/lazymaster bin/nts bin/shuffle bin/kundali 10 ruby_bins := bin/hue bin/reflink-snap 11 janet_bins := bin/backup 12 mpd_queue_bins := bin/mpd_add_to_queue bin/mpd_edit_queue bin/mpd_update_queue bin/mpd_insert_next bin/mpd_trim_queue 13 mpd_playlist_bins := bin/mpd_add_to_playlist bin/mpd_edit_playlist bin/mpd_update_library 14 mpd_report_bins := bin/mpd_now_playing bin/mpd_report bin/mpd_report_monthly bin/mpd_report_daily 15 mpd_bins := $mpd_queue_bins $mpd_playlist_bins $mpd_report_bins 16 bins := $rust_bins $zig_bins $go_bins $mpd_bins $python_bins $ruby_bins $janet_bins 17 18 cflags := -std=c17 -D_POSIX_C_SOURCE=200809L -Wall -Wextra -Wconversion -Wstrict-prototypes -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 19 ldflags := -lmpdclient -Wl,-z,relro -Wl,-z,now 20 cc := /usr/bin/cc 21 22 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 23 24 return b{ 25 $ bin/dam: Cargo.toml Cargo.lock rust-toolchain.toml dam/Cargo.toml $(knit.glob("dam/src/*.rs")) 26 cargo build --release -p dam 27 cp target/release/dam $output 28 29 $ bin/lastfm_rs: Cargo.toml Cargo.lock rust-toolchain.toml lastfm_rs/Cargo.toml $(knit.glob("lastfm_rs/src/*.rs")) 30 cargo build --release -p lastfm_rs 31 cp target/release/lastfm_rs $output 32 33 $ bin/plants: Cargo.toml Cargo.lock rust-toolchain.toml plants/Cargo.toml $(knit.glob("plants/src/*.rs")) 34 cargo build --release -p plants 35 cp target/release/plants $output 36 37 $ bin/pmn: pmn/build.zig pmn/build.zig.zon $(knit.glob("pmn/src/*.zig")) 38 cd pmn && zig build -Doptimize=ReleaseSafe 39 cp pmn/zig-out/bin/pmn $output 40 41 $ bin/pracomer: pracomer/build.zig pracomer/build.zig.zon $(knit.glob("pracomer/src/*.zig")) 42 cd pracomer && zig build -Doptimize=ReleaseSafe 43 cp pracomer/zig-out/bin/pracomer $output 44 45 $ bin/speediness: speediness/build.zig speediness/build.zig.zon $(knit.glob("speediness/src/*.zig")) 46 cd speediness && zig build -Doptimize=ReleaseSafe 47 cp speediness/zig-out/bin/speediness $output 48 49 $ bin/wrd: wrd/go.mod $(knit.glob("wrd/*.go")) 50 cd wrd && go build -o $(root)/$output . 51 52 $ bin/mpd_add_to_playlist: mpd/mpd_add_to_playlist.c mpd/mpd_common.c mpd/mpd_common.h 53 $cc $cflags -o $output mpd/mpd_add_to_playlist.c mpd/mpd_common.c $ldflags 54 55 $ bin/mpd_add_to_queue: mpd/mpd_add_to_queue.c mpd/mpd_common.c mpd/mpd_common.h 56 $cc $cflags -o $output mpd/mpd_add_to_queue.c mpd/mpd_common.c $ldflags 57 58 $ bin/mpd_edit_queue: mpd/mpd_edit_queue.c mpd/mpd_common.c mpd/mpd_common.h 59 $cc $cflags -o $output mpd/mpd_edit_queue.c mpd/mpd_common.c $ldflags 60 61 $ bin/mpd_update_library: mpd/mpd_update_library.c mpd/mpd_common.c mpd/mpd_common.h 62 $cc $cflags -o $output mpd/mpd_update_library.c mpd/mpd_common.c $ldflags 63 64 $ bin/mpd_update_queue: mpd/mpd_update_queue.c mpd/mpd_common.c mpd/mpd_common.h 65 $cc $cflags -o $output mpd/mpd_update_queue.c mpd/mpd_common.c $ldflags 66 67 $ bin/mpd_insert_next: mpd/mpd_insert_next.c mpd/mpd_common.c mpd/mpd_common.h 68 $cc $cflags -o $output mpd/mpd_insert_next.c mpd/mpd_common.c $ldflags 69 70 $ bin/mpd_edit_playlist: mpd/mpd_edit_playlist.c mpd/mpd_common.c mpd/mpd_common.h 71 $cc $cflags -o $output mpd/mpd_edit_playlist.c mpd/mpd_common.c $ldflags 72 73 $ bin/mpd_now_playing: mpd/mpd_now_playing.c mpd/mpd_common.c mpd/mpd_common.h 74 $cc $cflags -o $output mpd/mpd_now_playing.c mpd/mpd_common.c $ldflags 75 76 $ bin/mpd_trim_queue: mpd/mpd_trim_queue.c mpd/mpd_common.c mpd/mpd_common.h 77 $cc $cflags -o $output mpd/mpd_trim_queue.c mpd/mpd_common.c $ldflags 78 79 $ bin/mpd_report: mpd/mpd_report.c mpd/mpd_common.c mpd/mpd_common.h 80 $cc $cflags -o $output mpd/mpd_report.c mpd/mpd_common.c $ldflags 81 82 $ bin/mpd_report_monthly: mpd/mpd_report_monthly 83 cp mpd/mpd_report_monthly $output 84 chmod +x $output 85 86 $ .venv-stamp: requirements.txt 87 python3 -m venv .venv 88 .venv/bin/pip install --quiet --require-hashes -r requirements.txt 89 sha256sum requirements.txt > $output 90 91 $ bin/diggah: .venv-stamp diggah/diggah.py 92 printf '#!/bin/sh\nexec "%s/.venv/bin/python" "%s/diggah/diggah.py" "$$@"\n' $root $root > $output 93 chmod +x $output 94 95 $ bin/kundali: .venv-stamp kundali/kundali.py 96 printf '#!/bin/sh\nexec "%s/.venv/bin/python" "%s/kundali/kundali.py" "$$@"\n' $root $root > $output 97 chmod +x $output 98 99 $ bin/lazymaster: .venv-stamp lazymaster/lazymaster.py 100 printf '#!/bin/sh\nexec "%s/.venv/bin/python" "%s/lazymaster/lazymaster.py" "$$@"\n' $root $root > $output 101 chmod +x $output 102 103 $ bin/nts: .venv-stamp nts/nts.py 104 printf '#!/bin/sh\nexec "%s/.venv/bin/python" "%s/nts/nts.py" "$$@"\n' $root $root > $output 105 chmod +x $output 106 107 $ bin/shuffle: .venv-stamp shuffle/shuffle.py 108 printf '#!/bin/sh\nexec "%s/.venv/bin/python" "%s/shuffle/shuffle.py" "$$@"\n' $root $root > $output 109 chmod +x $output 110 111 $ bin/hue: hue/bin/hue $hue_rb 112 printf '#!/bin/sh\nexec ruby -I"%s/hue/lib" "%s/hue/bin/hue" "$$@"\n' $root $root > $output 113 chmod +x $output 114 115 $ bin/reflink-snap: reflink-snap/reflink-snap.rb 116 printf '#!/bin/sh\nexec ruby "%s/reflink-snap/reflink-snap.rb" "$$@"\n' $root > $output 117 chmod +x $output 118 119 $ bin/backup: backup/backup 120 cp backup/backup $output 121 chmod +x $output 122 123 $ all:VB: $bins 124 125 $ deploy-dir:VB: 126 install -d -m 700 $deploy_dir 127 128 $ deploy/all:VB: deploy-dir $bins 129 install -m 755 $bins $deploy_dir/ 130 echo "deployed all tools to $deploy_dir" 131 132 $ deploy/mpd:VB: deploy-dir $mpd_bins 133 install -m 755 $mpd_bins $deploy_dir/ 134 echo "deployed mpd tools to $deploy_dir" 135 136 $ deploy/%:VB: deploy-dir bin/% 137 install -m 755 bin/$match $deploy_dir/ 138 echo "deployed $match to $deploy_dir" 139 140 $ bin/mpd_report_daily: mpd/mpd_report_daily 141 cp mpd/mpd_report_daily $output 142 chmod +x $output 143 }