From f7d95139d88c20e6dc4f29df0a0189f22526066d Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Fri, 29 Oct 2010 22:37:14 +0200 Subject: change the way we generate dist tarballs This no longer displays (git) errors if you use the release tarball. It also adds a make target for fb in order to get rid of the git checking inside fb. Signed-off-by: Florian Pritz --- .gitignore | 1 + Makefile | 14 +++-- fb | 175 ------------------------------------------------------------- fb.in | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 181 insertions(+), 179 deletions(-) delete mode 100755 fb create mode 100644 fb.in diff --git a/.gitignore b/.gitignore index c2566cc..13615f8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ dist fb.1 +fb diff --git a/Makefile b/Makefile index 03bf66d..7252bc2 100644 --- a/Makefile +++ b/Makefile @@ -2,13 +2,18 @@ VERSION:=$(shell git describe | sed 's/^v//') MANDIR=/usr/share/man BINDIR=/usr/bin -all: fb.1 +all: fb.1 fb + +fb: fb.in + @[ -n "$(VERSION)" ] || (echo "Error: version detection failed"; exit 1) + sed 's/@VERSION@/$(VERSION)/' fb.in > fb + chmod 755 fb fb.1: fb.pod pod2man -c "" fb.pod fb.1 clean: - rm -f fb.1 + rm -f fb.1 fb rm -rf dist install: all @@ -20,9 +25,10 @@ uninstall: rm -f $(DESTDIR)$(MANDIR)/man1/fb.1 dist: all + @[ -n "$(VERSION)" ] || (echo "Error: version detection failed"; exit 1) mkdir -p dist/fb-$(VERSION) - cp -a fb fb.pod fb.1 COPYING Makefile dist/fb-$(VERSION) - sed -i 's/^VERSION=.*$$/VERSION="'$(VERSION)'"/' dist/fb-$(VERSION)/fb + cp -a fb fb.in fb.pod fb.1 COPYING Makefile dist/fb-$(VERSION) + sed -i 's/^VERSION:=.*$$/VERSION:="'$(VERSION)'"/' dist/fb-$(VERSION)/Makefile cd dist; tar -czf fb-$(VERSION).tar.gz fb-$(VERSION) version: diff --git a/fb b/fb deleted file mode 100755 index 6781ed4..0000000 --- a/fb +++ /dev/null @@ -1,175 +0,0 @@ -#!/bin/sh -#---------------------------------------------------- -# Author: Florian "Bluewind" Pritz -# Contributor: Moritz Wilhelmy -# -# Licensed under WTFPL v2 -# (see COPYING for full license text) -# -#---------------------------------------------------- -# Dependencies: curl -# Optional: xclip -#---------------------------------------------------- - -SCRIPTDIR="`dirname "$0"`" -VERSION="`cd $SCRIPTDIR; git describe 2>/dev/null | sed 's/^v//'`" - -if [ -z "$VERSION" ]; then - VERSION="unknown" -fi - -DELETE= -EXTENSION="" -GET= -TAR= -COMPRESS=0 -TAREXT=".tar" -TAROPTS="" -PASTEBIN="http://paste.xinu.at" -WARNSIZE=10485760 -USERAGENT="fb-client/$VERSION" -CLIPBOARD="" -EXITCODE=0 - -do_upload() { - local EXTRA="" - file="$1" - basefilename="`basename -- "$file"`" - basedirname="`dirname -- "$file"`" - if [ -d "$file" ]; then - cd "$basedirname" - tar $TAROPTS -cf "$TMPDIR/$basefilename$TAREXT" -- "$basefilename" - COMPRESS=0 - file="$TMPDIR/$basefilename$TAREXT" - fi - - if [ "$COMPRESS" == "1" ]; then - gzip -c -- "$file" > "$TMPDIR/$basefilename.gz" - file="$TMPDIR/$basefilename.gz" - elif [ "$COMPRESS" == "2" ]; then - xz -c -- "$file" > "$TMPDIR/$basefilename.xz" - file="$TMPDIR/$basefilename.xz" - fi - - if [ "$EXTENSION" ]; then - EXTRA="-F extension=$EXTENSION" - fi - TMPFILE=`mktemp "$TMPDIR/data.XXXXXX"` - if [ `stat -c %s -- "$file"` -gt "$WARNSIZE" ]; then - WARNSIZE=`curl -s "$PASTEBIN/file/get_max_size"` - if [ `stat -c %s -- "$file"` -gt "$WARNSIZE" ]; then - echo "Warning: Your upload is too big and would be rejected. Maximum size is: $WARNSIZE bytes. Skipping..." >&2 - EXITCODE=1 - return 1 - fi - fi - CURLOPTS="-# -n -L -A $USERAGENT $EXTRA" - if [ `stat -c %s -- "$file"` -eq "0" ]; then - if ! curl $CURLOPTS -F "file=@-;filename=$basefilename" "$PASTEBIN/file/do_upload" < "$file" > $TMPFILE; then - EXITCODE=1 - return 1 - fi - else - if ! curl $CURLOPTS -F "file=@$file" "$PASTEBIN/file/do_upload" > $TMPFILE; then - EXITCODE=1 - return 1 - fi - fi - sed '$d' $TMPFILE >&2 - URL=`tail -1 $TMPFILE` - echo $URL - CLIPBOARD="$CLIPBOARD $URL" -} - -read_stdin() { - if tty -s; then - echo "^C to exit, ^D to send" - fi - cat > "$1" -} - -help() { - cat <] - - Upload/nopaste file(s)/stdin to paste.xinu.at and copy URL(s) to clipboard. - ~/.netrc: machine paste.xinu.at password PASSWORD - - Switches: - -d delete the IDs - -g download the IDs and output on stdout (use with care!) - -t upload a tar file containing all files (and directories) - -h this help - - Options: - These have no effect if used in conjunction with a switch - -e extension for default highlighting (e.g. "diff") - -c compress the file being uploaded with gz or xz if used 2 times -! -} - -while getopts "e:gdhtcv" OPTION; do - case $OPTION in - e) EXTENSION="$OPTARG";; - g) GET=1;; - c) COMPRESS=`expr $COMPRESS + 1` - if [ "$COMPRESS" == "1" ]; then - TAROPTS="-z" - TAREXT=".tar.gz" - elif [ "$COMPRESS" == "2" ]; then - TAROPTS="-J" - TAREXT=".tar.xz" - fi - ;; - t) TAR=1;; - d) DELETE=1;; - v) echo "$VERSION"; exit 0;; - h|\?) help; exit 0;; - esac -done - -shift `expr $OPTIND - 1` - - -TMPDIR="`mktemp -d "/tmp/fb.XXXXXX"`" -trap "rm -rf '${TMPDIR}'" EXIT TERM - -if [ $# -eq 0 ]; then - read_stdin "$TMPDIR/stdin" - do_upload "$TMPDIR/stdin" -else - if [ "$TAR" ]; then - tar $TAROPTS -cf "$TMPDIR/upload$TAREXT" -- "$@" - COMPRESS=0 - do_upload "$TMPDIR/upload$TAREXT" - break - else - for i in "$@"; do - if [ "$DELETE" ]; then - if ! curl -n -L -A $USERAGENT "$PASTEBIN/file/delete/$i"; then - EXITCODE=1 - fi - elif [ "$GET" ]; then - if ! curl -s -o - -A $USERAGENT "$PASTEBIN/$i"; then - EXITCODE=1 - fi - elif echo "$i" | grep -qE "^(f|ht)tp(s)?://.+"; then - cd $TMPDIR - if ! curl -# -A $USERAGENT -O "$i"; then - EXITCODE=1 - continue - fi - for f in *; do - do_upload "$f" && rm -f -- "$f" - done - else - do_upload "$i" - fi - done - fi -fi - -[ "`which xclip 2>/dev/null`" ] && echo -n $CLIPBOARD | nohup xclip >/dev/null 2>&1 - -exit $EXITCODE diff --git a/fb.in b/fb.in new file mode 100644 index 0000000..67f58a5 --- /dev/null +++ b/fb.in @@ -0,0 +1,170 @@ +#!/bin/sh +#---------------------------------------------------- +# Author: Florian "Bluewind" Pritz +# Contributor: Moritz Wilhelmy +# +# Licensed under WTFPL v2 +# (see COPYING for full license text) +# +#---------------------------------------------------- +# Dependencies: curl +# Optional: xclip +#---------------------------------------------------- + +VERSION="@VERSION@" + +DELETE= +EXTENSION="" +GET= +TAR= +COMPRESS=0 +TAREXT=".tar" +TAROPTS="" +PASTEBIN="http://paste.xinu.at" +WARNSIZE=10485760 +USERAGENT="fb-client/$VERSION" +CLIPBOARD="" +EXITCODE=0 + +do_upload() { + local EXTRA="" + file="$1" + basefilename="`basename -- "$file"`" + basedirname="`dirname -- "$file"`" + if [ -d "$file" ]; then + cd "$basedirname" + tar $TAROPTS -cf "$TMPDIR/$basefilename$TAREXT" -- "$basefilename" + COMPRESS=0 + file="$TMPDIR/$basefilename$TAREXT" + fi + + if [ "$COMPRESS" == "1" ]; then + gzip -c -- "$file" > "$TMPDIR/$basefilename.gz" + file="$TMPDIR/$basefilename.gz" + elif [ "$COMPRESS" == "2" ]; then + xz -c -- "$file" > "$TMPDIR/$basefilename.xz" + file="$TMPDIR/$basefilename.xz" + fi + + if [ "$EXTENSION" ]; then + EXTRA="-F extension=$EXTENSION" + fi + TMPFILE=`mktemp "$TMPDIR/data.XXXXXX"` + if [ `stat -c %s -- "$file"` -gt "$WARNSIZE" ]; then + WARNSIZE=`curl -s "$PASTEBIN/file/get_max_size"` + if [ `stat -c %s -- "$file"` -gt "$WARNSIZE" ]; then + echo "Warning: Your upload is too big and would be rejected. Maximum size is: $WARNSIZE bytes. Skipping..." >&2 + EXITCODE=1 + return 1 + fi + fi + CURLOPTS="-# -n -L -A $USERAGENT $EXTRA" + if [ `stat -c %s -- "$file"` -eq "0" ]; then + if ! curl $CURLOPTS -F "file=@-;filename=$basefilename" "$PASTEBIN/file/do_upload" < "$file" > $TMPFILE; then + EXITCODE=1 + return 1 + fi + else + if ! curl $CURLOPTS -F "file=@$file" "$PASTEBIN/file/do_upload" > $TMPFILE; then + EXITCODE=1 + return 1 + fi + fi + sed '$d' $TMPFILE >&2 + URL=`tail -1 $TMPFILE` + echo $URL + CLIPBOARD="$CLIPBOARD $URL" +} + +read_stdin() { + if tty -s; then + echo "^C to exit, ^D to send" + fi + cat > "$1" +} + +help() { + cat <] + + Upload/nopaste file(s)/stdin to paste.xinu.at and copy URL(s) to clipboard. + ~/.netrc: machine paste.xinu.at password PASSWORD + + Switches: + -d delete the IDs + -g download the IDs and output on stdout (use with care!) + -t upload a tar file containing all files (and directories) + -h this help + + Options: + These have no effect if used in conjunction with a switch + -e extension for default highlighting (e.g. "diff") + -c compress the file being uploaded with gz or xz if used 2 times +! +} + +while getopts "e:gdhtcv" OPTION; do + case $OPTION in + e) EXTENSION="$OPTARG";; + g) GET=1;; + c) COMPRESS=`expr $COMPRESS + 1` + if [ "$COMPRESS" == "1" ]; then + TAROPTS="-z" + TAREXT=".tar.gz" + elif [ "$COMPRESS" == "2" ]; then + TAROPTS="-J" + TAREXT=".tar.xz" + fi + ;; + t) TAR=1;; + d) DELETE=1;; + v) echo "$VERSION"; exit 0;; + h|\?) help; exit 0;; + esac +done + +shift `expr $OPTIND - 1` + + +TMPDIR="`mktemp -d "/tmp/fb.XXXXXX"`" +trap "rm -rf '${TMPDIR}'" EXIT TERM + +if [ $# -eq 0 ]; then + read_stdin "$TMPDIR/stdin" + do_upload "$TMPDIR/stdin" +else + if [ "$TAR" ]; then + tar $TAROPTS -cf "$TMPDIR/upload$TAREXT" -- "$@" + COMPRESS=0 + do_upload "$TMPDIR/upload$TAREXT" + break + else + for i in "$@"; do + if [ "$DELETE" ]; then + if ! curl -n -L -A $USERAGENT "$PASTEBIN/file/delete/$i"; then + EXITCODE=1 + fi + elif [ "$GET" ]; then + if ! curl -s -o - -A $USERAGENT "$PASTEBIN/$i"; then + EXITCODE=1 + fi + elif echo "$i" | grep -qE "^(f|ht)tp(s)?://.+"; then + cd $TMPDIR + if ! curl -# -A $USERAGENT -O "$i"; then + EXITCODE=1 + continue + fi + for f in *; do + do_upload "$f" && rm -f -- "$f" + done + else + do_upload "$i" + fi + done + fi +fi + +[ "`which xclip 2>/dev/null`" ] && echo -n $CLIPBOARD | nohup xclip >/dev/null 2>&1 + +exit $EXITCODE -- cgit v1.2.3-24-g4f1b