diff options
-rw-r--r-- | fb.in | 46 |
1 files changed, 34 insertions, 12 deletions
@@ -31,6 +31,28 @@ require_executable() { fi } +is_url() { + if echo "$i" | grep -qE "^(f|ht)tp(s)?://.+"; then + return 0 + fi + return 1 +} + +do_tar_upload() { + if [ "$COMPRESS" = "1" ]; then + file="$TMPDIR/upload.tar.gz" + tar -cf - -- "$@" | gzip -c > "$file" || return 1 + elif [ "$COMPRESS" = "2" ]; then + file="$TMPDIR/upload.tar.xz" + tar -cf - -- "$@" | xz -c > "$file" || return 1 + else + file="$TMPDIR/upload.tar" + tar -cf "$file" -- "$@" || return 1 + fi + COMPRESS=0 + do_upload "$file" || return 1 +} + do_upload() { local EXTRA="" file="$1" @@ -177,22 +199,22 @@ elif [ $# -eq 0 ]; then do_upload "$TMPDIR/stdin" || EXITCODE=1 else if [ "$TAR" ]; then - if [ "$COMPRESS" = "1" ]; then - file="$TMPDIR/upload.tar.gz" - tar -cf - -- "$@" | gzip -c > "$file" - elif [ "$COMPRESS" = "2" ]; then - file="$TMPDIR/upload.tar.xz" - tar -cf - -- "$@" | xz -c > "$file" + HAVE_URL= + for i in "$@"; do + if is_url "$i"; then + HAVE_URL=1 + fi + done + if [ "$HAVE_URL" ]; then + # TODO: support -t when passing URLs as arguments + echo "Error: -t is not yet supported when operating on a URL" >&2 + exit 1 else - file="$TMPDIR/upload.tar" - tar -cf "$file" -- "$@" + do_tar_upload "$@" || EXITCODE=1 fi - COMPRESS=0 - do_upload "$file" || EXITCODE=1 - break else for i in "$@"; do - if echo "$i" | grep -qE "^(f|ht)tp(s)?://.+"; then + if is_url "$i"; then cd $TMPDIR if ! $LIBDIR/fb-helper d "$i" > "`basename "$i"`"; then EXITCODE=1 |