transfer.plugin.zsh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # transfer.sh Easy file sharing from the command line
  2. # transfer Plugin
  3. # Usage Example :
  4. # > transfer file.txt
  5. # > transfer directory/
  6. # Author:
  7. # Remco Verhoef <remco@dutchcoders.io>
  8. # https://gist.github.com/nl5887/a511f172d3fb3cd0e42d
  9. #
  10. curl --version 2>&1 > /dev/null
  11. if [ $? -ne 0 ]; then
  12. echo "Could not find curl."
  13. return 1
  14. fi
  15. transfer() {
  16. # check arguments
  17. if [ $# -eq 0 ];
  18. then
  19. echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"
  20. return 1
  21. fi
  22. # get temporarily filename, output is written to this file show progress can be showed
  23. tmpfile=$( mktemp -t transferXXX )
  24. # upload stdin or file
  25. file=$1
  26. if tty -s;
  27. then
  28. basefile=$(basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g')
  29. if [ ! -e $file ];
  30. then
  31. echo "File $file doesn't exists."
  32. return 1
  33. fi
  34. if [ -d $file ];
  35. then
  36. # zip directory and transfer
  37. zipfile=$( mktemp -t transferXXX.zip )
  38. cd $(dirname $file) && zip -r -q - $(basename $file) >> $zipfile
  39. curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> $tmpfile
  40. rm -f $zipfile
  41. else
  42. # transfer file
  43. curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile
  44. fi
  45. else
  46. # transfer pipe
  47. curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> $tmpfile
  48. fi
  49. # cat output link
  50. cat $tmpfile
  51. # cleanup
  52. rm -f $tmpfile
  53. }