summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authortypebrook <typebrook@gmail.com>2020-02-01 00:30:24 +0800
committertypebrook <typebrook@gmail.com>2020-02-01 00:30:24 +0800
commit52aa4ebde1151601ae8a35774ca289c5b6d798b8 (patch)
tree244f62b0aff0bd04ea462236d495590f2ac12c75
parentcaa69cba3d90a818545ab060372dfae492e14825 (diff)
update
-rwxr-xr-xscripts/gist20
1 files changed, 11 insertions, 9 deletions
diff --git a/scripts/gist b/scripts/gist
index a939a47..762bdfb 100755
--- a/scripts/gist
+++ b/scripts/gist
@@ -64,6 +64,7 @@ configuredClient=""
64 64
65# handle configuration cases 65# handle configuration cases
66_configure() { 66_configure() {
67 local target=""
67 [[ -z "$@" ]] && (${EDITOR:-vi} $CONFIG) && return 0 68 [[ -z "$@" ]] && (${EDITOR:-vi} $CONFIG) && return 0
68 if [[ $1 == 'token' ]]; then 69 if [[ $1 == 'token' ]]; then
69 [[ ${#2} -eq 40 ]] && target=$1=$2 \ 70 [[ ${#2} -eq 40 ]] && target=$1=$2 \
@@ -135,7 +136,7 @@ _apply_config() {
135 136
136_apply_config "$@" || exit 1 137_apply_config "$@" || exit 1
137 138
138auth_header="Authorization: token $token" 139AUTH_HEADER="Authorization: token $token"
139 140
140[[ -z "$folder" ]] && folder=~/gist && mkdir -p $folder 141[[ -z "$folder" ]] && folder=~/gist && mkdir -p $folder
141INDEX=$folder/index 142INDEX=$folder/index
@@ -177,6 +178,7 @@ _show_list() {
177 echo ' gist update' 178 echo ' gist update'
178 return 0 179 return 0
179 fi 180 fi
181 local filter=""
180 if [[ $1 == "s" ]]; then 182 if [[ $1 == "s" ]]; then
181 filter='/^[^s]/ d' 183 filter='/^[^s]/ d'
182 else 184 else
@@ -226,8 +228,8 @@ _parse_response() {
226 | tac | sed 's/, /,/g' | nl -s' ' \ 228 | tac | sed 's/, /,/g' | nl -s' ' \
227 | while read index link file_url_array public file_num comment_num description; do 229 | while read index link file_url_array public file_num comment_num description; do
228 local blob_code=$(echo $file_url_array | tr ',' '\n' | sed -E 's#.*raw/(.*)/.*#\1#' | sort | cut -c -7 | paste -sd '-') 230 local blob_code=$(echo $file_url_array | tr ',' '\n' | sed -E 's#.*raw/(.*)/.*#\1#' | sort | cut -c -7 | paste -sd '-')
229 [[ $public == 'False' ]] && mark=p 231 [[ $public == 'False' ]] && local mark=p
230 [[ -n $1 ]] && index=$1 232 [[ -n $1 ]] && local index=$1
231 echo $mark$index $link $blob_code $file_num $comment_num $description | tr -d '"' 233 echo $mark$index $link $blob_code $file_num $comment_num $description | tr -d '"'
232 done 234 done
233} 235}
@@ -245,7 +247,7 @@ _update() {
245 filter='/^[s]/ d' 247 filter='/^[s]/ d'
246 fi 248 fi
247 249
248 response=$(curl -H "$auth_header" $GITHUB_API/$route) 250 local response=$(curl -s -H "$AUTH_HEADER" $GITHUB_API/$route)
249 false && echo Failed to update gists && return 1 251 false && echo Failed to update gists && return 1
250 sed -i "$filter" $INDEX 252 sed -i "$filter" $INDEX
251 echo $response | _parse_response >> $INDEX 253 echo $response | _parse_response >> $INDEX
@@ -307,7 +309,7 @@ _goto_gist() {
307_delete_gist() { 309_delete_gist() {
308 for i in "$@"; do 310 for i in "$@"; do
309 _gist_id "$i" 311 _gist_id "$i"
310 curl -X DELETE -s -H "$auth_header" $GITHUB_API/gists/$GIST_ID \ 312 curl -X DELETE -s -H "$AUTH_HEADER" $GITHUB_API/gists/$GIST_ID \
311 && echo "$i" deleted \ 313 && echo "$i" deleted \
312 && sed -i -E "/^$i / d" $INDEX 314 && sed -i -E "/^$i / d" $INDEX
313 done 315 done
@@ -383,7 +385,7 @@ _set_gist() {
383# Let user type the content of gist before setting filename 385# Let user type the content of gist before setting filename
384_new_file() { 386_new_file() {
385 [[ -t 0 ]] && echo "Type a gist. <Ctrl-C> to cancel, <Ctrl-D> when done" > /dev/tty 387 [[ -t 0 ]] && echo "Type a gist. <Ctrl-C> to cancel, <Ctrl-D> when done" > /dev/tty
386 tmp_file=$(mktemp) 388 local tmp_file=$(mktemp)
387 cat > $tmp_file 389 cat > $tmp_file
388 echo -e '\n' > /dev/tty 390 echo -e '\n' > /dev/tty
389 [[ -z "$1" ]] && read -p 'Type file name: ' filename < /dev/tty 391 [[ -z "$1" ]] && read -p 'Type file name: ' filename < /dev/tty
@@ -397,13 +399,13 @@ _create_gist() {
397 [[ -z "$files" ]] && files=$(_new_file $filename) 399 [[ -z "$files" ]] && files=$(_new_file $filename)
398 [[ -z "$description" ]] && read -p 'Type description: ' description < /dev/tty 400 [[ -z "$description" ]] && read -p 'Type description: ' description < /dev/tty
399 401
400 index=$(( $(sed '/^s/ d' $INDEX | wc -l) +1 )) 402 local index=$(( $(sed '/^s/ d' $INDEX | wc -l) +1 ))
401 echo 'Creating a new gist' 403 echo 'Creating a new gist'
402 for file in $files; do 404 for file in $files; do
403 echo "\"$(basename $file)\": {\"content\": \"$(sed '$ !s/$/\\n/' $file)\"}," 405 echo "\"$(basename $file)\": {\"content\": \"$(sed '$ !s/$/\\n/' $file)\"},"
404 done | tr -d '\n' | sed 's/^/{/; s/,$/}/' \ 406 done | tr -d '\n' | sed 's/^/{/; s/,$/}/' \
405 | echo "{ \"public\": $public, \"files\": $(cat -), \"description\": \"$description\"}" \ 407 | echo "{ \"public\": $public, \"files\": $(cat -), \"description\": \"$description\"}" \
406 | curl -s -H "$auth_header" --data @- $GITHUB_API/gists \ 408 | curl -s -H "$AUTH_HEADER" --data @- $GITHUB_API/gists \
407 | sed '1 s/^/[/; $ s/$/]/' \ 409 | sed '1 s/^/[/; $ s/$/]/' \
408 | _parse_response $index >> $INDEX 410 | _parse_response $index >> $INDEX
409 411
@@ -422,7 +424,7 @@ _edit_gist() {
422 echo -n 'Type new description: ' 424 echo -n 'Type new description: '
423 read DESC < /dev/tty 425 read DESC < /dev/tty
424 echo "{ \"description\": \"$DESC\" }" \ 426 echo "{ \"description\": \"$DESC\" }" \
425 | curl -X PATCH -H "$auth_header" --data @- $GITHUB_API/gists/$GIST_ID > /dev/null \ 427 | curl -X PATCH -H "$AUTH_HEADER" --data @- $GITHUB_API/gists/$GIST_ID > /dev/null \
426 && _update 428 && _update
427} 429}
428 430