tools

various tools I have been using throughout the years
Log | Files | Refs | README | LICENSE

commit 4944e8b74bf26ef0485ad7e7b3f717c8de20d0ac
parent f07988be5adde725c7e5ce5349a3708c255185bf
Author: mtmn <miro@haravara.org>
Date:   Tue, 23 Jun 2026 13:26:59 +0200

bazel: update hue gems, module-dep-check script

Diffstat:
Dbazel/bazel_dep_update.py | 16----------------
Abazel/module-dep-check.sh | 64++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mhue/Gemfile.lock | 40++++++++++++++++++++--------------------
Mjustfile | 4++--
4 files changed, 86 insertions(+), 38 deletions(-)

diff --git a/bazel/bazel_dep_update.py b/bazel/bazel_dep_update.py @@ -1,16 +0,0 @@ -import json -from urllib.request import urlopen - -deps = [] -for line in open("MODULE.bazel"): - if "bazel_dep(" not in line: - continue - name = line.split("name")[1].split('"')[1] - ver = line.split("version")[1].split('"')[1] - deps.append((name, ver)) -for name, cur in deps: - latest = json.loads( - urlopen(f"https://bcr.bazel.build/modules/{name}/metadata.json").read() - )["versions"][-1] - if latest != cur: - print(f"{name}: {cur} → {latest}") diff --git a/bazel/module-dep-check.sh b/bazel/module-dep-check.sh @@ -0,0 +1,64 @@ +#!/bin/sh +set -eu + +BCR_BASE_URL="https://bcr.bazel.build/modules" +MODULE_FILE="MODULE.bazel" + +usage() { + cat <<EOF +Usage: $(basename "$0") [OPTIONS] + +Check for outdated bazel_dep entries in MODULE.bazel. + +Options: + -f FILE Path to MODULE.bazel (default: MODULE.bazel) + -h Show this help message + +Exit codes: + 0 All dependencies are up to date + 1 One or more dependencies are outdated + 2 Usage error or missing file +EOF +} + +while getopts f:h opt; do + case "$opt" in + f) MODULE_FILE="$OPTARG" ;; + h) + usage + exit 0 + ;; + *) + usage + exit 2 + ;; + esac +done + +if [ ! -f "$MODULE_FILE" ]; then + printf 'error: file not found: %s\n' "$MODULE_FILE" >&2 + exit 2 +fi + +tmpdir=$(mktemp -d) +trap 'rm -rf "$tmpdir"' EXIT + +deps=$(grep 'bazel_dep(' "$MODULE_FILE") || true +[ -z "$deps" ] && exit 0 + +printf '%s\n' "$deps" | sed -n 's/.*name *= *"\([^"]*\)".*version *= *"\([^"]*\)".*/\1 \2/p' | while read -r name cur; do + if [ -z "$name" ] || [ -z "$cur" ]; then + continue + fi + latest=$(curl -sf "${BCR_BASE_URL}/${name}/metadata.json" | jaq -r '.versions[-1]') || { + printf 'warn: failed to parse metadata for %s\n' "$name" >&2 + continue + } + if [ "$latest" != "$cur" ]; then + printf '%s: %s -> %s\n' "$name" "$cur" "$latest" + touch "${tmpdir}/outdated" + fi +done + +[ -f "${tmpdir}/outdated" ] && exit 1 +exit 0 diff --git a/hue/Gemfile.lock b/hue/Gemfile.lock @@ -74,7 +74,7 @@ GEM parser (3.3.11.1) ast (~> 2.4.1) racc - pp (0.6.3) + pp (0.6.4) prettyprint prettyprint (0.2.0) prism (1.9.0) @@ -85,10 +85,10 @@ GEM racc (1.8.1) rainbow (3.1.1) rake (13.4.2) - rbi (0.3.13) + rbi (0.3.14) prism (~> 1.0) rbs (>= 4.0.1) - rbs (4.0.2) + rbs (4.0.3) logger prism (>= 1.6.0) tsort @@ -153,17 +153,17 @@ GEM simplecov_json_formatter (~> 0.1) simplecov-html (0.13.2) simplecov_json_formatter (0.1.4) - sorbet (0.6.13303) - sorbet-static (= 0.6.13303) - sorbet-runtime (0.6.13303) - sorbet-static (0.6.13303-x86_64-linux) - sorbet-static-and-runtime (0.6.13303) - sorbet (= 0.6.13303) - sorbet-runtime (= 0.6.13303) - spoom (1.7.16) + sorbet (0.6.13309) + sorbet-static (= 0.6.13309) + sorbet-runtime (0.6.13309) + sorbet-static (0.6.13309-x86_64-linux) + sorbet-static-and-runtime (0.6.13309) + sorbet (= 0.6.13309) + sorbet-runtime (= 0.6.13309) + spoom (1.8.1) erubi (>= 1.10.0) prism (>= 0.28.0) - rbi (>= 0.3.3) + rbi (>= 0.3.14) rbs (>= 4.0.0.dev.5) rexml (>= 3.2.6) sorbet-static-and-runtime (>= 0.5.10187) @@ -247,7 +247,7 @@ CHECKSUMS netrc (0.11.0) sha256=de1ce33da8c99ab1d97871726cba75151113f117146becbe45aa85cb3dabee3f parallel (2.1.0) sha256=b35258865c2e31134c5ecb708beaaf6772adf9d5efae28e93e99260877b09356 parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54 - pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6 + pp (0.6.4) sha256=dfcb0fce700c41456265922884f9fe195d7fbb0674a3578e6c0f69588e82b570 prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193 prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 psych (5.4.0) sha256=14f72d69a611af663d7d70e4a7b67d9eb1f3ae9f8d916b478961d5a0075ba5b7 @@ -255,8 +255,8 @@ CHECKSUMS racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701 - rbi (0.3.13) sha256=6afd53a574268abcc71daed4c025673561f27a990b3b087e7889e8b073ab2d7a - rbs (4.0.2) sha256=af75671e66cd03434cc546622741ebf83f6197ec4328375805306330bf78ef25 + rbi (0.3.14) sha256=932ed904adbb5ca645c285c8b36da1b7ff6321ec1870d187d6325248cb637658 + rbs (4.0.3) sha256=5a7bf70e2628549d9a1f44eae447b2cfe55968a9c60cfff52693a4bdcc020e14 rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192 reek (6.5.0) sha256=d26d3a492773b2bbc228888067a21afe33ac07954a17dbd64cdeae42c4c69be1 regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb @@ -278,11 +278,11 @@ CHECKSUMS simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5 simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246 simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428 - sorbet (0.6.13303) sha256=92d548c3e1a2b544d8f343e208cb5e33386396ac0b9dd87e96283ca3290426c7 - sorbet-runtime (0.6.13303) sha256=d4f0d8a754842f4fceb8fb7aaa589bb41ff57035088c498f29f0b91207830ff0 - sorbet-static (0.6.13303-x86_64-linux) sha256=bebc4ae059661618cd376c706a68d84d5743cac65d28fd6a001e2600cd9111d6 - sorbet-static-and-runtime (0.6.13303) sha256=2d0c444c233d01dc0132a5c4b872d38cdb1aa328c80153aa80f33a6befb0e908 - spoom (1.7.16) sha256=b6033d1aaede800ef37505474d260d57a02fa63364b4725ea40b6f606e932d59 + sorbet (0.6.13309) sha256=341f744180ede02e555d2b9bf5a0f79cdfdace5a932939e7549f1d0dc8e3cab9 + sorbet-runtime (0.6.13309) sha256=3f950900f3d5b640d9baf291327f8ec13ef44552367342cf9eebaaf4a6539774 + sorbet-static (0.6.13309-x86_64-linux) sha256=648c97749afd92328b1f47805ed3105c14c0871852dec5ecb22d947432b4564d + sorbet-static-and-runtime (0.6.13309) sha256=1c3c699dd862d21d438db031f7cec025e4f76bbc44940ca6d6eecbf5d72aeb7c + spoom (1.8.1) sha256=6abdc7852a3f33e0366e6fa712533496b28e2d0e79aa213b5b1aa246bebf2e8b stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1 tapioca (0.19.1) sha256=5de94d458950897ffe3d4e86a21eec48bb6a8775af85f80b1486b7ae7ba51823 thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73 diff --git a/justfile b/justfile @@ -18,8 +18,8 @@ cargo-lockfile: {{ cargo }} generate-lockfile # Check `bazel_dep` versions against BCR for updates -bazel-dep-update: - python3 bazel/bazel_dep_update.py +bazel-dep-check: + sh bazel/module-dep-check.sh # Run `cargo check` (using bazel clippy aspect) clippy +targets: