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