aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authortypebrook <typebrook@gmail.com>2020-03-09 15:07:02 +0800
committertypebrook <typebrook@gmail.com>2020-03-09 15:07:02 +0800
commitb7d4b0f0f27558bf4d82585e7692a704ac35466b (patch)
tree0d6d75759bb16f81919c5ffab9e93d5fe28a5743
parent57bc75def35432cad7df5b7eaa47740ca7247e75 (diff)
update
-rw-r--r--alias2
-rwxr-xr-xtools/upload-github-release-asset.sh69
2 files changed, 46 insertions, 25 deletions
diff --git a/alias b/alias
index 2c16fc2..0bf6dab 100644
--- a/alias
+++ b/alias
@@ -96,7 +96,7 @@ gcg() {
96 git clone git@github.com:$1/$2.git && cd $(basename $2) 96 git clone git@github.com:$1/$2.git && cd $(basename $2)
97} 97}
98github_release_asset() { 98github_release_asset() {
99 command="upload-github-release-asset.sh\n github_api_token=$GITHUB_API_TOKEN\n owner=typebrook\n repo=tig\n tag=LATEST\n filename=$(which tig)\n overwrite=false" 99 command="upload-github-release-asset.sh\n github_api_token=$GITHUB_API_TOKEN\n owner=typebrook\n repo=tig\n tag=LATEST\n type=asset\n filename=$(which tig)\n overwrite=false"
100 prompt "$command" 100 prompt "$command"
101} 101}
102 102
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