only parse json if its json and else return the error
This commit is contained in:
@@ -54,18 +54,26 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
release_response="$(curl --silent --show-error \
|
||||
release_body="$(mktemp)"
|
||||
create_body="$(mktemp)"
|
||||
trap 'rm -f "$release_body" "$create_body"' EXIT
|
||||
|
||||
release_status="$(curl --silent --show-error \
|
||||
--output "$release_body" \
|
||||
--write-out "%{http_code}" \
|
||||
--header "Authorization: token ${ACTION_ACCESS_TOKEN}" \
|
||||
--header "Accept: application/json" \
|
||||
"${api_base}/releases/tags/${tag_name}")"
|
||||
|
||||
release_id="$(printf '%s' "$release_response" | python - <<'PY'
|
||||
release_id="$(python - "$release_body" <<'PY'
|
||||
import json
|
||||
import sys
|
||||
|
||||
path = sys.argv[1]
|
||||
try:
|
||||
data = json.load(sys.stdin)
|
||||
except json.JSONDecodeError:
|
||||
with open(path, "r", encoding="utf-8") as fh:
|
||||
data = json.load(fh)
|
||||
except (FileNotFoundError, json.JSONDecodeError):
|
||||
print("")
|
||||
raise SystemExit(0)
|
||||
|
||||
@@ -73,7 +81,7 @@ jobs:
|
||||
PY
|
||||
)"
|
||||
|
||||
if [ -z "$release_id" ]; then
|
||||
if [ "$release_status" = "404" ] || [ -z "$release_id" ]; then
|
||||
create_payload="$(python - <<'PY'
|
||||
import json
|
||||
import os
|
||||
@@ -91,30 +99,45 @@ jobs:
|
||||
PY
|
||||
)"
|
||||
|
||||
release_response="$(curl --silent --show-error \
|
||||
create_status="$(curl --silent --show-error \
|
||||
--request POST \
|
||||
--output "$create_body" \
|
||||
--write-out "%{http_code}" \
|
||||
--header "Authorization: token ${ACTION_ACCESS_TOKEN}" \
|
||||
--header "Accept: application/json" \
|
||||
--header "Content-Type: application/json" \
|
||||
--data "$create_payload" \
|
||||
"${api_base}/releases")"
|
||||
|
||||
release_id="$(printf '%s' "$release_response" | python - <<'PY'
|
||||
if [ "$create_status" -lt 200 ] || [ "$create_status" -ge 300 ]; then
|
||||
echo "Failed to create release for ${tag_name} (HTTP ${create_status})" >&2
|
||||
cat "$create_body" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
release_id="$(python - "$create_body" <<'PY'
|
||||
import json
|
||||
import sys
|
||||
|
||||
data = json.load(sys.stdin)
|
||||
with open(sys.argv[1], "r", encoding="utf-8") as fh:
|
||||
data = json.load(fh)
|
||||
print(data["id"])
|
||||
PY
|
||||
)"
|
||||
cp "$create_body" "$release_body"
|
||||
elif [ "$release_status" -lt 200 ] || [ "$release_status" -ge 300 ]; then
|
||||
echo "Failed to fetch release for ${tag_name} (HTTP ${release_status})" >&2
|
||||
cat "$release_body" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
existing_asset_id="$(printf '%s' "$release_response" | python - <<'PY'
|
||||
existing_asset_id="$(python - "$release_body" <<'PY'
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
data = json.load(sys.stdin)
|
||||
with open(sys.argv[1], "r", encoding="utf-8") as fh:
|
||||
data = json.load(fh)
|
||||
asset_name = os.environ["ASSET_NAME"]
|
||||
|
||||
for asset in data.get("assets", []):
|
||||
|
||||
Reference in New Issue
Block a user