aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaroline Larimore <caroline@larimo.re>2025-11-27 13:11:38 -0800
committerCaroline Larimore <caroline@larimo.re>2025-11-27 13:11:38 -0800
commit55dd94a95f7c597c9e45276cfb9306746d9eefe0 (patch)
treea4eaace8b1fc6a77cbae5282f45e59447f576898
parent5a2e46c025b7d6ad9669f0f64cb152a5b7b51c80 (diff)
refactor: move meta.jq into heredoc
-rwxr-xr-xmcsh.sh59
-rw-r--r--meta.jq53
2 files changed, 58 insertions, 54 deletions
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("\\${(?<key>.*)}"; "\($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"
diff --git a/meta.jq b/meta.jq
deleted file mode 100644
index 8f7d788..0000000
--- a/meta.jq
+++ /dev/null
@@ -1,53 +0,0 @@
-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("\\${(?<key>.*)}"; "\($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
-}