aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--alias5
-rwxr-xr-xtools/github-release.sh43
2 files changed, 28 insertions, 20 deletions
diff --git a/alias b/alias
index 4f2140e..c70606a 100644
--- a/alias
+++ b/alias
@@ -27,10 +27,7 @@ todo() {
27fix() { 27fix() {
28 which $1 && grep -Po 'FIXME.*' $(which $1) 28 which $1 && grep -Po 'FIXME.*' $(which $1)
29} 29}
30gi() { 30alias g='gist'
31 dir=$(gist $1 --no-action)
32 [[ -d $dir ]] && cd $dir
33}
34 31
35# shell 32# shell
36alias src="source $HOME/.$(basename $SHELL)rc" 33alias src="source $HOME/.$(basename $SHELL)rc"
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)
62eval $(echo "$response" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=' | sed 's/id/release_id/') 62eval $(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
65post_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
74delete_asset() {
75 echo "Deleting asset($1)... " > /dev/tty
76 curl -X "DELETE" -H "$AUTH" "$GH_REPO/releases/assets/$1"
77}
78
65upload_asset() { 79upload_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
94edit_release() { 105edit_release() {
@@ -104,7 +115,7 @@ edit_release() {
104} 115}
105EOF 116EOF
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
110case $type in 121case $type in