blob: ffc479f4912044ff9f62871d691edd0121f1a9db (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
#!/bin/bash
github_api_token=$(cat $SETTING_DIR/tokens/github)
user=typebrook
folder=~/git/gist
mkdir -p $folder
index=$folder/index
_update() {
# get the list of gists
curl -s -H "Authorization: token $github_api_token" https://api.github.com/users/$user/gists |\
jq '.[] | "\( .html_url ) \(.files | keys | length) \( .description )"' |\
tr -d '"' | tac | nl |\
while read line_num link file_num description; do
echo $line_num $link $file_num $(echo $description | cut -c -70)
done | tee $index
# clone repos which are not in the local machine
comm -13 <(find $folder -maxdepth 1 -type d | sed '1d; s#.*/##' | sort) \
<(cat $index | cut -d' ' -f2 | sed 's#.*/##' | sort) |\
xargs -I{} git clone git@github.com:{}.git $folder/{}
}
_go_to_gist() {
GIST_ID=$(cat $index | sed -n "$1"p | cut -d' ' -f2 | sed -r 's#.*/##')
echo this gist is at $folder/$GIST_ID
cd $folder/$GIST_ID && tig --all 2> /dev/null
}
_delete_gist() {
GIST_ID=$(cat $index | sed -n "$1"p | cut -d' ' -f2 | sed -r 's#.*/##')
curl -X DELETE -s -H "Authorization: token $github_api_token" https://api.github.com/gists/$GIST_ID
_update
}
_show_detail() {
GIST_ID=$(cat $index | sed -n "$1"p | cut -d' ' -f2 | sed -r 's#.*/##')
curl -s -H "Authorization: token $github_api_token" https://api.github.com/gists/$GIST_ID
}
# FIXME cannot upload a file
_create() {
curl -v -H "Authorization: token $github_api_token" \
--data "$(generate_post_data $1 | tee json)" \
https://api.github.com/gists
}
generate_post_data() {
cat <<EOF
{
"public": true,
"files": { "$1": {"content": "$(cat $1 | sed 's/"/\\\"/g' | tr '\n' ',')"}},
"description": $2
}
EOF
}
if [[ $# -eq 0 ]]; then
cat $index
exit 0
fi
case "$1" in
update | u)
_update
;;
detail | d)
_show_detail $2
;;
delete | D)
_delete_gist $2
;;
create | c)
_create $2
;;
*)
_go_to_gist $1
;;
esac
|