diff --git a/.bin/transfer b/.bin/transfer new file mode 100755 index 00000000..29e919a5 --- /dev/null +++ b/.bin/transfer @@ -0,0 +1,60 @@ +#!/bin/sh +## Adapted from https://gist.github.com/nl5887/a511f172d3fb3cd0e42d. + +# +# Defines transfer alias and provides easy command line file and folder sharing. +# +# Authors: +# Remco Verhoef +# + +curl --version 2>&1 > /dev/null +if [ $? -ne 0 ]; then + echo "Could not find curl." + exit 1 +fi + +# check arguments +if [ $# -eq 0 ]; +then + echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md" + exit 1 +fi + +# get temporarily filename, output is written to this file show progress can be showed +tmpfile=$( mktemp -t transferXXX ) + +# upload stdin or file +file=$1 + +if tty -s; +then + basefile=$(basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g') + + if [ ! -e $file ]; + then + echo "File $file doesn't exists." + exit 1 + fi + + if [ -d $file ]; + then + # zip directory and transfer + zipfile=$( mktemp -t transferXXX.zip ) + cd $(dirname $file) && zip -r -q - $(basename $file) >> $zipfile + curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> $tmpfile + rm -f $zipfile + else + # transfer file + curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile + fi +else + # transfer pipe + curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> $tmpfile +fi + +# cat output link +cat $tmpfile + +# cleanup +rm -f $tmpfile