dotfiles/.bin/dopaste

56 lines
1.5 KiB
Plaintext
Raw Normal View History

2022-12-06 08:01:44 +01:00
#!/bin/sh
. $HOME/.bin/_config
PSSH="${USER}@${DOMAIN}"
LOC="p"
f="$1"
if [ "$1" = "-h" ]; then
printf "Usage:\n"
printf " paste < text.txt - read from stdin, generate filename\n"
printf " paste new.txt < file.txt - read from stdin with filename\n"
printf " paste file.txt - upload file as is\n"
return 0
fi
if [ -z "$1" ]; then
f="$(date +"%Y-%m-%d_%M-%S")-$(pwgen -1 4 -A -0).txt"
ssh ${PSSH} "printf \"%s\" \"$(cat)\" > ${RPATH}/${LOC}/$f"
elif [ -f "$f" ]; then
scp "$f" ${PSSH}:"${RPATH}/${LOC}/${f##*/}"
else
ssh ${PSSH} "printf \"%s\n\" \"$(cat)\" > ${RPATH}/${LOC}/${f##*/}"
fi
SELECTOR="9"
# if data comes from stdin
if [ ! -t 0 ]; then
# it's always 0
SELECTOR="0"
else
# if a parmeter is given and it's a file
if [ -f "$f" ]; then
# determine type and set selector
case "$(file --mime-type -b "$f")" in
image/*) SELECTOR="I";;
text/*) SELECTOR="0";;
message/*) SELECTOR="0";;
*/x-shellscript) SELECTOR="0";;
*/pgp-keys) SELECTOR="0";;
esac
else
# parameter given, but not a file, must be cat then...
SELECTOR=0
fi
fi
printf "https://${DOMAIN}/${SELECTOR}/${LOC}/${f##*/}\n"
printf "https://${DOMAIN}/${SELECTOR}/${LOC}/${f##*/}" | xclip
# write paste history (for convenience and rmpaste)
printf "$(date +"%Y-%m-%d %M:%S")|$f\n" \
| ssh -q $PSSH "cat - >> $RPATH/${LOC}/.pastehistory"
[ -z $DISPLAY ] || notify-send "$(xclip -o)"