aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/upload-github-release-asset.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/upload-github-release-asset.sh')
-rwxr-xr-xtools/upload-github-release-asset.sh69
1 files changed, 45 insertions, 24 deletions
diff --git a/tools/upload-github-release-asset.sh b/tools/upload-github-release-asset.sh
index af78fee..acff25e 100755
--- a/tools/upload-github-release-asset.sh
+++ b/tools/upload-github-release-asset.sh
@@ -13,6 +13,7 @@
13# * owner 13# * owner
14# * repo 14# * repo
15# * tag 15# * tag
16# * type (asset or edit)
16# * filename 17# * filename
17# * github_api_token 18# * github_api_token
18# * overwrite (optional, could be ture, false, delete, default to be false) 19# * overwrite (optional, could be ture, false, delete, default to be false)
@@ -26,7 +27,6 @@
26 27
27# Check dependencies. 28# Check dependencies.
28set -e 29set -e
29xargs=$(which gxargs || which xargs)
30 30
31# Validate settings. 31# Validate settings.
32[ "$TRACE" ] && set -x 32[ "$TRACE" ] && set -x
@@ -57,29 +57,50 @@ response=$(curl -sH "$AUTH" $GH_TAGS)
57eval $(echo "$response" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=' | sed 's/id/release_id/') 57eval $(echo "$response" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=' | sed 's/id/release_id/')
58[ "$release_id" ] || { echo "Error: Failed to get release id for tag: $tag"; echo "$response" | awk 'length($0)<100' >&2; exit 1; } 58[ "$release_id" ] || { echo "Error: Failed to get release id for tag: $tag"; echo "$response" | awk 'length($0)<100' >&2; exit 1; }
59 59
60# Get ID of the asset based on given filename. 60upload_asset() {
61# If exists, delete it. 61 # Get ID of the asset based on given filename.
62eval $(echo "$response" | grep -C2 "\"name\":.\+$(basename $filename)" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=' | sed 's/id/asset_id/') 62 # If exists, delete it.
63if [ "$asset_id" = "" ]; then 63 eval $(echo "$response" | grep -C2 "\"name\":.\+$(basename $filename)" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=' | sed 's/id/asset_id/')
64 echo "No need to overwrite asset" 64 if [ "$asset_id" = "" ]; then
65else 65 echo "No need to overwrite asset"
66 if [ "$overwrite" = "true" ] || [ "$overwrite" = "delete" ]; then 66 else
67 echo "Deleting asset($asset_id)... " 67 if [ "$overwrite" = "true" ] || [ "$overwrite" = "delete" ]; then
68 curl -X "DELETE" -H "Authorization: token $github_api_token" "https://api.github.com/repos/$owner/$repo/releases/assets/$asset_id" 68 echo "Deleting asset($asset_id)... "
69 if [ "$overwrite" = "delete" ]; then 69 curl -X "DELETE" -H "Authorization: token $github_api_token" "https://api.github.com/repos/$owner/$repo/releases/assets/$asset_id"
70 exit 0 70 if [ "$overwrite" = "delete" ]; then
71 fi 71 exit 0
72 else 72 fi
73 echo "File already exists on tag $tag" 73 else
74 echo "If you want to overwrite it, set overwrite=true" 74 echo "File already exists on tag $tag"
75 exit 1 75 echo "If you want to overwrite it, set overwrite=true"
76 fi 76 exit 1
77fi 77 fi
78 fi
79
80 # Upload asset
81 echo "Uploading asset... "
82
83 # Construct url
84 GH_ASSET="https://uploads.github.com/repos/$owner/$repo/releases/$release_id/assets?name=$(basename $filename)"
78 85
79# Upload asset 86 curl --data-binary @"$filename" -H "$AUTH" -H "Content-Type: application/octet-stream" $GH_ASSET
80echo "Uploading asset... " 87}
81 88
82# Construct url 89edit_release() {
83GH_ASSET="https://uploads.github.com/repos/$owner/$repo/releases/$release_id/assets?name=$(basename $filename)" 90 GH_RELEASE="$GH_REPO/releases/$release_id"
91 curl -v -X PATCH -H "$AUTH" -H "Content-Type: application/json" $GH_RELEASE \
92 -d "{ \
93 \"tag_name\": \"$tag\", \
94 \"target_commitish\": \"master\", \
95 \"name\": \"daily-taiwan-pbf\", \
96 \"body\": \"$(cat $filename | sed 's/"/\\"/g; $! s/$/\\n/' | tr -d '\n') \", \
97 \"draft\": false, \
98 \"prerelease\": false \
99 }"
100}
84 101
85curl --data-binary @"$filename" -H "Authorization: token $github_api_token" -H "Content-Type: application/octet-stream" $GH_ASSET 102case $type in
103 asset) upload_asset;;
104 edit) edit_release;;
105 *) echo "type should be 'asset' or 'edit'";;
106esac