diff --git a/forgejo-release.sh b/forgejo-release.sh index 6857b72..5cbaf20 100755 --- a/forgejo-release.sh +++ b/forgejo-release.sh @@ -91,7 +91,9 @@ upload_release() { if [ "$SKIP_ASSETS" == 'false' ]; then release_id=$(jq --raw-output .id <"$TMP_DIR"/release.json) for file in "$RELEASE_DIR"/*; do - asset_name="$(basename "$file")" + # https://stackoverflow.com/a/4657796/10109857 + # url encode some chars + asset_name="$(basename "$file" | sed -e 's/%/%25/g' -e 's/ /%20/g' -e 's/!/%21/g' -e 's/"/%22/g' -e 's/#/%23/g' -e 's/\$/%24/g' -e 's/\&/%26/g' -e 's/'\''/%27/g' -e 's/(/%28/g' -e 's/)/%29/g' -e 's/\*/%2a/g' -e 's/+/%2b/g' -e 's/,/%2c/g' -e 's/-/%2d/g' -e 's/\./%2e/g' -e 's/\//%2f/g' -e 's/:/%3a/g' -e 's/;/%3b/g' -e 's//%3e/g' -e 's/?/%3f/g' -e 's/@/%40/g' -e 's/\[/%5b/g' -e 's/\\/%5c/g' -e 's/\]/%5d/g' -e 's/\^/%5e/g' -e 's/_/%5f/g' -e 's/`/%60/g' -e 's/{/%7b/g' -e 's/|/%7c/g' -e 's/}/%7d/g' -e 's/~/%7e/g')" api_bin "repos/$REPO/releases/$release_id/assets/$asset_name" -d @"$file" done fi