diff options
-rwxr-xr-x | publish | 57 |
1 files changed, 44 insertions, 13 deletions
@@ -38,13 +38,14 @@ history_lines=1000 usage() { cat << EOF -usage: $0 <src> [<src> ...] +usage: $0 [<src> [<src> ...]] copy the file <src> to a server an report the URL. OPTIONS: -h Show this message -s Show the history + -b Use input files' basenames on remote side (default when only one file is given) -n no-do. Just print what would have been done EOF } @@ -71,8 +72,9 @@ history_show() { } NODO="" +inputxclip=0 -while getopts "hns" OPTION +while getopts "hnsx" OPTION do case $OPTION in h) @@ -82,6 +84,9 @@ do n) NODO="echo" ;; + x) + inputxclip=1 + ;; s) if [ -r "$history_file" ]; then history_show @@ -100,8 +105,29 @@ done shift $(($OPTIND - 1)) if [[ "$#" = 0 ]]; then - echo "No files to copy" >&2 - exit 2 + stdin=`tempfile` + trap "rm -f '$stdin'" EXIT + chmod a+r "$stdin" + + if [ "$inputxclip" != 1 ] ; then + echo "No files given on the command line, using stdin" >&2 + cat > "$stdin" + else + if which xclip >/dev/null 2>&1; then + echo "Publishing x clipboard:" >&2 + xclip -o > "$stdin" + cat "$stdin" | sed -e 's#^#| #' + echo + echo "EOF" + else + echo "xclip not installed?" >&2 + exit 1 + fi + fi + set dummy "$stdin" + shift +elif [ "$inputxclip" = 1 ] ; then + echo "Ignoring -x because there are files on the command line" >&2 fi d_date=$(date +'%Y-%m-%d') @@ -116,23 +142,28 @@ if [ "$#" = 1 ]; then else only_one=0 echo "$base_http/$d_server_http_base/" + if which xclip >/dev/null 2>&1; then + echo -n "$base_http/$d_server_http_base/" | xclip + fi fi -for file in "$@"; do - uri="$base_http/$d_server_http_base/$( echo -n "$file" | uri_encode )" - echo "$uri" - history_append "$uri" -done while [ "$#" -gt 0 ]; do file="$1" shift - if [ -d "$file" ] && [ "$only_one" = 1 ]; then - trail="/" - else - trail="" + uri="$base_http/$d_server_http_base/$( echo -n "`basename $file`" | uri_encode )" + echo "$uri" + history_append "$uri" + + trail="" + if [ "$only_one" = 1 ]; then + if [ -d "$file" ]; then + trail="/" + fi + echo -n "$uri" | xclip fi + $NODO rsync $rsync_args "$file$trail" $base_rsync"/$d_server/" done |