mirror of
https://github.com/charmbracelet/gum.git
synced 2024-10-26 15:20:05 +03:00
48 lines
1.3 KiB
Bash
48 lines
1.3 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
# If the user passes '-h', '--help', or 'help' print out a little bit of help.
|
||
|
# text.
|
||
|
case "$1" in
|
||
|
"-h" | "--help" | "help")
|
||
|
printf 'Generate kaomojis on request.\n\n'
|
||
|
printf 'Usage: %s [kind]\n' "$(basename "$0")"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
# The user can pass an argument like "bear" or "angry" to specify the general
|
||
|
# kind of Kaomoji produced.
|
||
|
sentiment=""
|
||
|
if [[ $1 != "" ]]; then
|
||
|
sentiment=" $1"
|
||
|
fi
|
||
|
|
||
|
# Ask mods to generate Kaomojis. Save the output in a variable.
|
||
|
kaomoji="$(mods "generate 10${sentiment} kaomojis. number them and put each one on its own line.")"
|
||
|
if [[ $kaomoji == "" ]]; then
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Pipe mods output to gum so the user can choose the perfect kaomoji. Save that
|
||
|
# choice in a variable. Also note that we're using cut to drop the item number
|
||
|
# in front of the Kaomoji.
|
||
|
choice="$(echo "$kaomoji" | gum choose | cut -d ' ' -f 2)"
|
||
|
if [[ $choice == "" ]]; then
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# If xsel (X11) or pbcopy (macOS) exists, copy to the clipboard. If not, just
|
||
|
# print the Kaomoji.
|
||
|
if command -v xsel &> /dev/null; then
|
||
|
printf '%s' "$choice" | xclip -sel clip # X11
|
||
|
elif command -v pbcopy &> /dev/null; then
|
||
|
printf '%s' "$choice" | pbcopy # macOS
|
||
|
else
|
||
|
# We can't copy, so just print it out.
|
||
|
printf 'Here you go: %s\n' "$choice"
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
# We're done!
|
||
|
printf 'Copied %s to the clipboard\n' "$choice"
|