From 55dd94a95f7c597c9e45276cfb9306746d9eefe0 Mon Sep 17 00:00:00 2001 From: Caroline Larimore Date: Thu, 27 Nov 2025 13:11:38 -0800 Subject: refactor: move meta.jq into heredoc --- mcsh.sh | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) (limited to 'mcsh.sh') diff --git a/mcsh.sh b/mcsh.sh index 900c5d9..9c0ecca 100755 --- a/mcsh.sh +++ b/mcsh.sh @@ -187,6 +187,63 @@ function update_profile ( ) function update_metadata ( + meta_filter="$(cat <<-'EOF' + def apply_optional: if has("rules") then + { + "rules": [.rules[] | { + "action": .action, + "match": del(.action) + }], + "value": del(.rules) + } as $optional + | if $optional.rules[].match | inside($info[0]) then + $optional.value + else + empty + end + end; + + def replace_placeholders: { + "version_name": .id, + "version_type": .type, + + "assets_index_name": .assets, + + "classpath": (. as $root | [ + .libraries[] | apply_optional | "${libraries_directory}/" + .downloads.artifact.path + ] + ["${versions_directory}/\($root.id)/client.jar"] | join(":")), + "clientid": "idfk", + + # log4j config path + "path": "${versions_directory}/\(.id)/log4j.xml" + } as $strings | walk(if type == "string" then + gsub("\\${(?.*)}"; "\($strings[.key] // "${\(.key)}")") + end); + + replace_placeholders | { + "args": .arguments | to_entries | [.[] | { + "key": .key, + "value": .value | [ + .[] | if type == "object" then + apply_optional | .value + end + ] | flatten + }] | from_entries, # as $args | $args + {"jvm": [.logging.client.argument] + $args.jvm}), + "libraries": [.libraries[] | apply_optional | { + "name": .name, + "path": .downloads.artifact.path, + "url": .downloads.artifact.url + }], + "version": .id, + "asset_index": .assetIndex.url, + "java_version": .javaVersion.majorVersion, + "client_url": .downloads.client.url, + "main_class": .mainClass, + "logging_config": .logging.client.file.url + } + EOF + )" + printf 'updating version manifest\n' >&2 mkdir -p "$VERSIONS_DIR" curl --silent "https://piston-meta.mojang.com/mc/game/version_manifest_v2.json" | jq '{"latest": .latest, "versions": [.versions[] | {"key": .id, "value": .url}] | from_entries}' > "$VERSIONS_DIR/manifest.json" @@ -201,7 +258,7 @@ function update_metadata ( printf 'updating %s meta %s\n' "$version" >&2 mkdir -p "$VERSIONS_DIR/$version" curl --silent -o "$VERSIONS_DIR/$version/meta.json" "$(jq -r --arg version "$version" '.versions[$version]' $VERSIONS_DIR/manifest.json)" - meta="$(jq -c --slurpfile info info.json -f meta.jq "$VERSIONS_DIR/$version/meta.json")" + meta="$(jq -c --slurpfile info info.json "$meta_filter" "$VERSIONS_DIR/$version/meta.json")" printf 'updating %s asset index...\n' "$version" >&2 mkdir -p "$ASSETS_DIR/indexes" -- cgit v1.2.3