diff options
author | typebrook <typebrook@gmail.com> | 2020-03-19 00:55:44 +0800 |
---|---|---|
committer | typebrook <typebrook@gmail.com> | 2020-03-19 00:55:44 +0800 |
commit | ab5c492ebe11aa7dba9f6cc96353b48382ee6939 (patch) | |
tree | d8218b86125223ae6cc7670eed139c9991978701 /tools | |
parent | 3b5ffa090f257a55f01e3f77ca4e8f659adb76dc (diff) |
update
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/github-release.sh | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/tools/github-release.sh b/tools/github-release.sh index e7ddb3b..2936134 100755 --- a/tools/github-release.sh +++ b/tools/github-release.sh | |||
@@ -62,33 +62,44 @@ response=$(curl -sH "$AUTH" $GH_TAGS) | |||
62 | eval $(echo "$response" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=' | sed 's/id/release_id/') | 62 | eval $(echo "$response" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=' | sed 's/id/release_id/') |
63 | [ "$release_id" ] || { echo "Error: Failed to get release id for tag: $tag"; echo "$response" | awk 'length($0)<100' >&2; exit 1; } | 63 | [ "$release_id" ] || { echo "Error: Failed to get release id for tag: $tag"; echo "$response" | awk 'length($0)<100' >&2; exit 1; } |
64 | 64 | ||
65 | post_asset() { | ||
66 | # Upload asset | ||
67 | echo "Uploading asset... " > /dev/tty | ||
68 | # Construct url | ||
69 | GH_ASSET="https://uploads.github.com/repos/$repo/releases/$release_id/assets?name=$(basename $1)" | ||
70 | |||
71 | curl --data-binary @"$filename" -H "$AUTH" -H "Content-Type: application/octet-stream" $GH_ASSET | ||
72 | } | ||
73 | |||
74 | delete_asset() { | ||
75 | echo "Deleting asset($1)... " > /dev/tty | ||
76 | curl -X "DELETE" -H "$AUTH" "$GH_REPO/releases/assets/$1" | ||
77 | } | ||
78 | |||
65 | upload_asset() { | 79 | upload_asset() { |
66 | # Get ID of the asset based on given filename. | 80 | # Get ID of the asset based on given filename. |
67 | # If exists, delete it. | 81 | # If exists, delete it. |
68 | eval $(echo "$response" | grep -C2 "\"name\":.\+$(basename $filename)" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=' | sed 's/id/asset_id/') | 82 | eval $(echo "$response" | grep -C2 "\"name\": \"$(basename $filename)\"" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=' | sed 's/id/asset_id/') |
69 | if [ "$asset_id" = "" ]; then | 83 | if [ "$asset_id" = "" ]; then |
70 | echo "No need to overwrite asset" | 84 | echo "No need to overwrite asset" |
85 | post_asset $filename | ||
71 | else | 86 | else |
72 | if [ "$overwrite" = "true" ] || [ "$overwrite" = "delete" ]; then | 87 | if [ "$overwrite" = "true" ]; then |
73 | echo "Deleting asset($asset_id)... " | 88 | new_asset_id=$(post_asset ${filename}_bak | sed -E 's/^\{[^{]+"id":([0-9]+).+$/\1/') |
74 | curl -X "DELETE" -H "$AUTH" "$GH_REPO/releases/assets/$asset_id" | 89 | [ "$new_asset_id" = "" ] && exit 1 || delete_asset "$asset_id" |
75 | if [ "$overwrite" = "delete" ]; then | 90 | |
76 | exit 0 | 91 | echo "Renaming asset($new_asset_id) from $(basename $filename)_bak to $(basename $filename)" > /dev/tty |
77 | fi | 92 | curl -X PATCH -H "$AUTH" -H "Content-Type: application/json" \ |
93 | --data "{\"name\":\"$(basename $filename)\"}" "$GH_REPO/releases/assets/$new_asset_id" | ||
94 | elif [ "$overwrite" = "delete" ]; then | ||
95 | delete_asset "$asset_id" | ||
96 | exit 0 | ||
78 | else | 97 | else |
79 | echo "File already exists on tag $tag" | 98 | echo "File already exists on tag $tag" |
80 | echo "If you want to overwrite it, set overwrite=true" | 99 | echo "If you want to overwrite it, set overwrite=true" |
81 | exit 1 | 100 | exit 1 |
82 | fi | 101 | fi |
83 | fi | 102 | fi |
84 | |||
85 | # Upload asset | ||
86 | echo "Uploading asset... " | ||
87 | |||
88 | # Construct url | ||
89 | GH_ASSET="https://uploads.github.com/repos/$repo/releases/$release_id/assets?name=$(basename $filename)" | ||
90 | |||
91 | curl --data-binary @"$filename" -H "$AUTH" -H "Content-Type: application/octet-stream" $GH_ASSET | ||
92 | } | 103 | } |
93 | 104 | ||
94 | edit_release() { | 105 | edit_release() { |
@@ -104,7 +115,7 @@ edit_release() { | |||
104 | } | 115 | } |
105 | EOF | 116 | EOF |
106 | ) | 117 | ) |
107 | curl -v -X PATCH -H "$AUTH" -H "Content-Type: application/json" -d "$body" $GH_RELEASE | 118 | curl -X PATCH -H "$AUTH" -H "Content-Type: application/json" -d "$body" $GH_RELEASE |
108 | } | 119 | } |
109 | 120 | ||
110 | case $type in | 121 | case $type in |