From 6b7ca94be115b7678074b3880b8f127d17c5267e Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Tue, 7 Jul 2026 18:20:12 +0200 Subject: feat: parse_manifest reads NAME_URL entries from a deps manifest Co-Authored-By: Claude Opus 4.8 --- mkhint | 13 +++++++++++++ tests/mkhint_test.sh | 16 ++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/mkhint b/mkhint index 5795fb0..50e2412 100755 --- a/mkhint +++ b/mkhint @@ -425,6 +425,19 @@ fix_current() { echo "Done. $count package(s) with phantom deps." } +# ── bundled-dep manifest handling ───────────────────────────────────────────── +# Reconcile a bundle package's extra DOWNLOAD lines against an upstream deps +# manifest (opt-in via BUNDLE_MANIFEST_FILE). See docs spec 2026-07-07. + +# parse_manifest — print one download URL per line for each NAME_URL +# entry. SHA256 lines ignored (hints use MD5SUM; we re-download and md5). +parse_manifest() { + local file="$1" + [[ -f "$file" ]] || return 0 + awk '/_URL[[:space:]]/ { print $2 }' "$file" +} +# ── end bundled-dep manifest handling ───────────────────────────────────────── + # Create new hint file create_new_hint_file() { cd "$HINT_DIR" diff --git a/tests/mkhint_test.sh b/tests/mkhint_test.sh index 837289a..9830f3b 100755 --- a/tests/mkhint_test.sh +++ b/tests/mkhint_test.sh @@ -1457,6 +1457,22 @@ assert_contains "URL dashed date bumped" "$MOCK_HINT/datedpkg.hint" 'd assert_not_contains "no stale dashed date" "$MOCK_HINT/datedpkg.hint" '2026-04-30' assert_not_contains "MD5SUM recalculated" "$MOCK_HINT/datedpkg.hint" 'abc123def456' +# ── T-BM1: parse_manifest extracts URLs from NAME_URL/NAME_SHA256 pairs ────── +echo "" +echo "T-BM1: parse_manifest extracts URLs, ignores SHA256 lines" +cat > "$MOCK_BASE/deps.txt" << 'EOF' +LIBUV_URL https://github.com/libuv/libuv/archive/v1.52.1.tar.gz +LIBUV_SHA256 478baf2599bfbc +TREESITTER_URL https://github.com/tree-sitter/tree-sitter/archive/v0.26.7.tar.gz +TREESITTER_SHA256 4343107ad1097 +EOF +bm_out=$(bash -c 'source <(sed -n "/# ── bundled-dep manifest handling/,/# ── end bundled-dep/p" '"$SCRIPT"'); parse_manifest '"$MOCK_BASE"'/deps.txt') +echo "$bm_out" | grep -qx 'https://github.com/libuv/libuv/archive/v1.52.1.tar.gz' \ + && echo "$bm_out" | grep -qx 'https://github.com/tree-sitter/tree-sitter/archive/v0.26.7.tar.gz' \ + && ! echo "$bm_out" | grep -q '478baf' \ + && { echo " PASS: parse_manifest URLs only"; (( PASS++ )); } \ + || { echo " FAIL: parse_manifest: $bm_out"; (( FAIL++ )); ERRORS+=("T-BM1"); } + # ─── SUMMARY ────────────────────────────────────────────────────────────────── teardown -- cgit v1.2.3