Marty Oehme
a69cc0a517
Uses 0x0.st as a file host for quick uploading and sharing from the commandline. Use `sharefile` and select a file with `fzf`.
62 lines
1.4 KiB
Bash
Executable file
62 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env sh
|
|
#
|
|
# Select a file and share it through 0x0.st
|
|
#
|
|
# Examples:
|
|
# `sharefile`
|
|
# calling without arguments allows you to first select a folder and then
|
|
# a file from the folder to share.
|
|
# `sharefile ~/my-file.zip`
|
|
# calling with a file as argument automatically uploads the file and copies
|
|
# share link to clipboard.
|
|
# When called with a folder as argument allows you to select file within, uploads it and copies share link.
|
|
|
|
OXO_URL="https://0x0.st"
|
|
|
|
folderpicker() {
|
|
selected=$(find "${1:-$HOME}" -type d | fzf)
|
|
[ "$?" -eq 130 ] && exit 130
|
|
echo "$selected"
|
|
}
|
|
|
|
filepicker() {
|
|
selected=$(find "${1:-$HOME}" -type f | fzf)
|
|
[ "$?" -eq 130 ] && exit 130
|
|
echo "$selected"
|
|
}
|
|
|
|
filetooxo() {
|
|
curl -F"file=@$1" "$OXO_URL"
|
|
}
|
|
|
|
# exit on escape pressed
|
|
exit_check() {
|
|
[ "$1" -eq 130 ] && exit 130
|
|
}
|
|
|
|
main() {
|
|
if [ $# -eq 0 ]; then
|
|
foldpick=$(folderpicker "")
|
|
exit_check $?
|
|
picked=$(filepicker "$foldpick")
|
|
elif [ -f "$1" ]; then
|
|
picked="$1"
|
|
elif [ -d "$1" ]; then
|
|
picked=$(filepicker "$1")
|
|
else
|
|
printf "Please only provide a folder or file as the optional argument to sharefile." >&2
|
|
exit 1
|
|
fi
|
|
exit_check $?
|
|
|
|
url=$(filetooxo "$picked")
|
|
echo "$url"
|
|
if command -v notify-send >/dev/null; then
|
|
notify-send "Upload finished" "URL: $url"
|
|
fi
|
|
# printf "%s" "$url" | nohup xclip -i -selection clipboard -r -verbose -loops 2 >/dev/null 2>&1
|
|
printf "%s" "$url" | xsel --clipboard
|
|
exit
|
|
}
|
|
|
|
main "$@"
|