diff options
| author | Danilo M. <danix@danix.xyz> | 2026-07-07 18:28:29 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-07-07 18:28:29 +0200 |
| commit | f0e458c39b475a887c43c7f4d3616ebb94f798ac (patch) | |
| tree | e08d5dfd6f790189f6cdcfc64a44748a66653645 /mkhint | |
| parent | 375b2b74e3ff11a7029ec8de7ca8cb8167b2f6a1 (diff) | |
| download | mkhintfile-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-x | mkhint | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -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 |
