aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xgist34
1 files changed, 24 insertions, 10 deletions
diff --git a/gist b/gist
index 80996b1..9a869f9 100755
--- a/gist
+++ b/gist
@@ -1,12 +1,12 @@
1#!/usr/bin/env bash 1#!/usr/bin/env bash
2# 2#
3# Author: Hsieh Chin Fan 3# Author: Hsieh Chin Fan (typebrook)
4# License: MIT 4# License: MIT
5# https://gist.github.com/typebrook/b0d2e7e67aa50298fdf8111ae7466b56 5# https://gist.github.com/typebrook/b0d2e7e67aa50298fdf8111ae7466b56
6# 6#
7# 7#
8# This script host your gists as local Github repo 8# This script host your gists as local Github repo
9# It works with jq and curl, which are easy to get in most cases 9# It works under GNU with jq and curl, both are easy to get in most cases
10# 10#
11# Use the following commands to manage your gists: 11# Use the following commands to manage your gists:
12# 12#
@@ -38,7 +38,11 @@
38# * clean removed gists in local 38# * clean removed gists in local
39# gist [clean | C] 39# gist [clean | C]
40 40
41# * show this help message
42# gist [help | h]
43
41# define your environmemnts here 44# define your environmemnts here
45# TODO support auth prompt
42#------------------- 46#-------------------
43github_api_token=$(cat $SETTING_DIR/tokens/github) 47github_api_token=$(cat $SETTING_DIR/tokens/github)
44user=typebrook 48user=typebrook
@@ -59,14 +63,14 @@ _show_list() {
59} 63}
60 64
61# get the list of gists 65# get the list of gists
66# TODO support secret gist
62_update() { 67_update() {
63 curl -s -H "$auth_header" $github_api/users/$user/gists |\ 68 curl -s -H "$auth_header" $github_api/users/$user/gists |\
64 tee jojo |\
65 jq '.[] | "\(.html_url) \([.files[] | .raw_url]) \(.files | keys | length) \(.comments) \(.description)"' |\ 69 jq '.[] | "\(.html_url) \([.files[] | .raw_url]) \(.files | keys | length) \(.comments) \(.description)"' |\
66 tac | nl |\ 70 tac | nl |\
67 while read line_num link blobs file_num comment_num description; do 71 while read line_num link file_url_array file_num comment_num description; do
68 blob_code=$(echo $blobs | jq -r '.[]' | sed -r 's#.*raw/(.*)/.*#\1#' | sort | cut -c -7 | paste -sd '-') 72 blob_code=$(echo $file_url_array | jq -r '.[]' | sed -r 's#.*raw/(.*)/.*#\1#' | sort | cut -c -7 | paste -sd '-')
69 echo $line_num $link $blob_code $file_num $comment_num $(echo $description | cut -c -80) | tr -d '"' 73 echo $line_num $link $blob_code $file_num $comment_num $(echo $description | cut -c -70) | tr -d '"'
70 done > $index && \ 74 done > $index && \
71 _show_list 75 _show_list
72} 76}
@@ -88,6 +92,7 @@ _sync_repos() {
88 [[ $(git rev-parse origin/master) == $(git rev-parse master) ]] && \ 92 [[ $(git rev-parse origin/master) == $(git rev-parse master) ]] && \
89 git pull 93 git pull
90 done 94 done
95 echo Everything is fine!
91} 96}
92 97
93_gist_id() { 98_gist_id() {
@@ -100,7 +105,7 @@ _goto_gist() {
100 echo Not a valid gist number: $1 105 echo Not a valid gist number: $1
101 echo Use the number in the first column instead: 106 echo Use the number in the first column instead:
102 echo 107 echo
103 show_list 108 _show_list
104 return 0 109 return 0
105 fi 110 fi
106 111
@@ -119,9 +124,12 @@ _delete_gist() {
119_clean_repos() { 124_clean_repos() {
120 comm -23 <(find $folder -maxdepth 1 -type d | sed '1d; s#.*/##' | sort) \ 125 comm -23 <(find $folder -maxdepth 1 -type d | sed '1d; s#.*/##' | sort) \
121 <(cat $index | cut -d' ' -f2 | sed 's#.*/##' | sort) |\ 126 <(cat $index | cut -d' ' -f2 | sed 's#.*/##' | sort) |\
122 xargs -I{} rm -rf $folder/{} 127 while read dir; do
128 mv $folder/$dir /tmp && echo move $folder/$dir to /tmp
129 done
123} 130}
124 131
132# TODO star count
125_show_detail() { 133_show_detail() {
126 GIST_ID=$(_gist_id $1) 134 GIST_ID=$(_gist_id $1)
127 curl -s -H "$auth_header" $github_api/gists/$GIST_ID |\ 135 curl -s -H "$auth_header" $github_api/gists/$GIST_ID |\
@@ -132,7 +140,6 @@ _show_detail() {
132} 140}
133 141
134# create a new gist with files 142# create a new gist with files
135# TODO support folder of files
136_create_gist() { 143_create_gist() {
137 echo -n 'description: ' 144 echo -n 'description: '
138 read DESC 145 read DESC
@@ -142,7 +149,7 @@ _create_gist() {
142 FILE=$(basename $file) 149 FILE=$(basename $file)
143 jq --arg FILE "$FILE" '. as $content | { ($FILE): {content: $content} }' -Rs $file 150 jq --arg FILE "$FILE" '. as $content | { ($FILE): {content: $content} }' -Rs $file
144 done |\ 151 done |\
145 jq -s --arg DESC "$DESC" '{ 152 jq --slurp --arg DESC "$DESC" '{
146 public: true, 153 public: true,
147 files: add, 154 files: add,
148 description: ($DESC) 155 description: ($DESC)
@@ -160,6 +167,10 @@ _edit_gist() {
160 _update 167 _update
161} 168}
162 169
170_help_message() {
171 sed -r -n ' /^$/ q; 8,$ s/^#//p' $0
172}
173
163case "$1" in 174case "$1" in
164 "") 175 "")
165 _show_list 176 _show_list
@@ -186,6 +197,9 @@ case "$1" in
186 clean | C) 197 clean | C)
187 _clean_repos 198 _clean_repos
188 ;; 199 ;;
200 help | h)
201 _help_message
202 ;;
189 *) 203 *)
190 _goto_gist "$1" 204 _goto_gist "$1"
191 ;; 205 ;;