1
1
#! /bin/bash
2
2
# based on: https://gist.github.com/s-leroux/7cb7424d33ba3753e907cc2553bcd1ba
3
3
# modified by: cca
4
-
4
+ set -u -o pipefail
5
+ set_dir (){ _dir=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) " ; }; set_dir
6
+ safe_source () { source $1 ; set_dir; }
7
+ # end of bash boilerplate
5
8
6
9
print_usage (){
7
10
cat << USAGE
@@ -18,13 +21,13 @@ USAGE
18
21
}
19
22
20
23
# 0. Your file name
21
- FNAME=$1
24
+ FNAME=${1 :- }
22
25
if [[ -f $FNAME ]]; then
23
26
CONTENT=$( cat $FNAME )
24
- GITHUB_USERNAME=$2
27
+ GITHUB_USERNAME=${2 :- }
25
28
else
26
29
CONTENT=$( timeout 2 cat -)
27
- GITHUB_USERNAME=$1
30
+ GITHUB_USERNAME=${1-}
28
31
FNAME=" stdin"
29
32
if [[ " $CONTENT " == " " ]]; then
30
33
print_usage
38
41
# Replace tabs by \t
39
42
# Replace " by \"
40
43
# Replace EOL by \n
41
- CONTENT=$( echo " ${CONTENT} " | sed -e ' s/\r//' -e' s/\t/\\t/g' -e ' s/"/\\"/g' | awk ' { printf($0 "\\n") }' )
44
+ CONTENT=$( echo " ${CONTENT} " | sed -e ' s/\\/\\\\/g ' -e ' s/\ r//' -e' s/\t/\\t/g' -e ' s/"/\\"/g' | awk ' { printf($0 "\\n") }' )
42
45
43
46
read -p " Give a description: " DESCRIPTION
44
47
45
48
# 2. Build the JSON request
46
- read -r -d ' ' DESC << EOF
49
+ tmp_file=$( mktemp)
50
+
51
+ cat > $tmp_file << EOF
47
52
{
48
53
"description": "$DESCRIPTION ",
49
54
"public": true,
@@ -56,18 +61,22 @@ read -r -d '' DESC <<EOF
56
61
EOF
57
62
58
63
# 3. Use curl to send a POST request
59
-
60
64
if [[ " $GITHUB_USERNAME " != " " ]]; then
61
65
# REGISTERED USER
62
- OUTPUT=$( curl -u " ${GITHUB_USERNAME} " -X POST -d " ${DESC} " " https://api.github.com/gists" )
63
- else
64
- # ANONYMOUS GIST :
65
- OUTPUT=$( curl -X POST -d " ${DESC} " " https://api.github.com/gists" )
66
+ USER_PARAM=" -u ${GITHUB_USERNAME} "
66
67
fi
67
68
68
- echo " $OUTPUT "
69
+ OUTPUT=$( curl ${USER_PARAM:- } -X POST -d @$tmp_file " https://api.github.com/gists" )
70
+ uploaded_url=$( echo " $OUTPUT " | grep ' html_url' | grep ' gist' )
71
+
72
+ if [[ ! -z ${uploaded_url:- } ]]; then
73
+ echo " URL: "
74
+ echo " -----------------"
75
+ echo $uploaded_url
76
+ else
77
+ echo " ---------------- ERROR -----------------------"
78
+ echo " $OUTPUT "
79
+ echo " -----------------"
80
+ fi
69
81
70
- echo " -----------------"
71
- echo " URL: "
72
- echo " -----------------"
73
- echo " $OUTPUT " | grep ' html_url' | grep ' gist'
82
+ rm $tmp_file
0 commit comments