forked from Jipok/Jauth
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgithub-key-import.sh
executable file
·31 lines (26 loc) · 1014 Bytes
/
github-key-import.sh
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
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
file="${1:-$HOME/.ssh/authorized_keys}"
[ -f "./authorized_keys" ] && file="${1:-$PWD/authorized_keys}"
search() {
q=$( echo $@ | tr " " '+' )
curl -s "https://github.com/search?q=$q&ref=opensearch&type=users" |\
jq -r '.payload.results.[] | .login + " {" + .name + "}"' |\
sed 's/{}//g'
}
export -f search
username=$(echo "" | fzf --bind "change:reload-sync:search {q}" | cut -f1 -d' ')
keys=$(curl -s "https://github.com/$username.keys" | sed "s/\$/ $username/")
echo "Public keys: $keys"
echo "Username: $username"
[ -z "$@" ] && [ ! -f "./authorized_keys" ] && echo -e "\e[0;33mFilename not provided via cmdline. Using default one:\e[m"
echo -e "Append to:\033[0;34m $file \033[0m"
read -r -p "Are you sure? [Y/n]" response
response=${response,,} # tolower
if [[ $response =~ ^(y| ) ]] || [[ -z $response ]]; then
echo "$keys" >> "$file"
echo "DONE"
else
echo "CANCELED"
fi