diff --git a/modules/transfer/README.md b/modules/transfer/README.md new file mode 100644 index 00000000..3c10f6ab --- /dev/null +++ b/modules/transfer/README.md @@ -0,0 +1,14 @@ +Transfer.sh +========== + +Defines [transfer][https://transfer.sh/] aliases for easy file sharing from the commandline. + +Authors +------- + +*The authors of this module should be contacted via the [issue tracker][2].* + + - [Remco Verhoef](https://github.com/dutchcoders) + +[1]: https://transfer.sh/ +[2]: https://github.com/dutchcoders/transfer.sh/ diff --git a/modules/transfer/init.zsh b/modules/transfer/init.zsh new file mode 100644 index 00000000..2bdd62e2 --- /dev/null +++ b/modules/transfer/init.zsh @@ -0,0 +1,60 @@ +# +# Defines transfer alias and provides easy command line file and folder sharing. +# +# Authors: +# Remco Verhoef +# + +if (( ! $+commands[curl] )); then + return 1 +fi + +transfer() { + # check arguments + if [ $# -eq 0 ]; + then + echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md" + return 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." + return 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 +} + +alias transfer=transfer +