1
0
Fork 0
mirror of https://github.com/notwa/rc synced 2024-11-14 14:09:03 -08:00
rc/sh/mkgist

60 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env bash
mkgist() {
local token="$(< ~/.gisttoken)"
if [ $? -ne 0 ]; then
echo failed to read ~/.gisttoken -- do you have one? >&2
echo https://github.com/settings/applications >&2
return 1
fi
local public=true anon=0 desc=
while [ $# -gt 0 ]; do
case "$1" in
-p) public=false;;
-a) anon=1;;
-d) [ $# -lt 2 ] && desc= || desc="$2"
shift;;
*) echo "usage: $0 [-p] [-a] [-d {description}]" >&2
return 1
esac
shift
done
local head=
[ $anon -eq 0 ] && head="Authorization: token $token"
local rf="$(mktemp)"
if [ ! -O "$rf" ]; then
echo failed to create temporary output file >&2
return 1
fi
# TODO: sanitize $desc
curl 'https://api.github.com/gists' -sSid@- -H "$head" -o "$rf" << EOF
{
"description": "$desc",
"public": $public,
"files": { ".dummy": { "content": "." } }
}
EOF
if [ $? -ne 0 ]; then
rm "$rf"
echo failed to POST to github >&2
return 1
fi
sed -n '/Location/{s@.*/@@;p;q}' "$rf" | tr -d '\r ' | while read; do
echo "https://gist.github.com/$REPLY"
git clone "https://gist.github.com/$REPLY.git"
[ $? -eq 0 ] && (
cd "$REPLY"
git rm .dummy
git remote set-url origin "git@gist.github.com:$REPLY.git"
)
done
rm "$rf"
}
mkgist "$@"