aboutsummaryrefslogtreecommitdiffstats
path: root/mkhint
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-07-07 18:28:29 +0200
committerDanilo M. <danix@danix.xyz>2026-07-07 18:28:29 +0200
commitf0e458c39b475a887c43c7f4d3616ebb94f798ac (patch)
treee08d5dfd6f790189f6cdcfc64a44748a66653645 /mkhint
parent375b2b74e3ff11a7029ec8de7ca8cb8167b2f6a1 (diff)
downloadmkhintfile-f0e458c39b475a887c43c7f4d3616ebb94f798ac.tar.gz
mkhintfile-f0e458c39b475a887c43c7f4d3616ebb94f798ac.zip
feat: load_bundle_manifests + manifest_url_for
Parse the pkg->url-template config and substitute {VERSION}. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'mkhint')
-rwxr-xr-xmkhint28
1 files changed, 28 insertions, 0 deletions
diff --git a/mkhint b/mkhint
index 7c593b8..2a18abc 100755
--- a/mkhint
+++ b/mkhint
@@ -485,6 +485,34 @@ match_dep_url() {
done <<< "$list"
return 1
}
+
+# Loaded map: pkg name -> URL template. Populated by load_bundle_manifests.
+declare -A BUNDLE_MANIFESTS=()
+load_bundle_manifests() {
+ BUNDLE_MANIFESTS=()
+ [[ -f "$BUNDLE_MANIFEST_FILE" ]] || return 0
+ local line pkg url
+ while IFS= read -r line; do
+ line="${line%%#*}"
+ [[ -z "${line// }" ]] && continue
+ read -r pkg url <<< "$line"
+ [[ -n "$pkg" && -n "$url" ]] && BUNDLE_MANIFESTS["$pkg"]="$url"
+ done < "$BUNDLE_MANIFEST_FILE"
+}
+
+# manifest_url_for <pkg> <version> — echo the manifest URL for pkg with
+# {VERSION} substituted. Non-zero if pkg is not listed.
+manifest_url_for() {
+ local pkg="$1" ver="$2"
+ local tmpl="${BUNDLE_MANIFESTS[$pkg]:-}"
+ [[ -z "$tmpl" ]] && return 1
+ printf '%s\n' "${tmpl//\{VERSION\}/$ver}"
+}
+
+# True if pkg has a bundle manifest configured.
+pkg_has_manifest() {
+ [[ -n "${BUNDLE_MANIFESTS[$1]:-}" ]]
+}
# ── end bundled-dep manifest handling ─────────────────────────────────────────
# Create new hint file