From e46b5baef07b766d83b5a4225bbff944307d898b Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Sun, 27 Apr 2014 01:56:14 +0200 Subject: [PATCH] Make send accept input from another process --- README.org | 5 +++-- hypo | 26 ++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/README.org b/README.org index cba5859..6349983 100644 --- a/README.org +++ b/README.org @@ -35,8 +35,9 @@ found in the URL) to remove. - =scrot= :: Run [[http://freecode.com/projects/scrot][scrot]] to take a screen shot and upload it to hypo. All arguments given are passed directly to ~scrot~. - - =send= :: Upload a file to hypo. It requires one argument: the file - to send to hypo. + - =send= :: Upload a file to hypo. It can either accept output from + another process, or it needs the name of a file as a + first parameter. * License diff --git a/hypo b/hypo index aa7da11..f7d4f2a 100755 --- a/hypo +++ b/hypo @@ -22,19 +22,37 @@ URL="https://ryuslash.org/hypo" function help_send { echo "Usage: $xname send FILE" + echo " $xname send [SUFFIX]" echo - echo "FILE will be uploaded to a hypo instance and the URL at which it can be visited" - echo "will be printed." + echo "Using the first form FILE will be uploaded to a hypo instance and the URL at " + echo "which it can be visited will be printed." + echo + echo "Using the second form requires that input come from a pipe. Such as:" + echo + echo " cat somefile.txt | hypo send" + echo + echo "In this case the argument to send is optional, if it is specified it should " + echo "include a \`.' to help pygments decide on the syntax highlighting to use. If the " + echo "argument is left unspecified it defaults to \`.txt'." } function cmd_send { - if [[ -z "$1" ]]; then + if [[ ! -t 0 ]]; then + sendfile="$(mktemp --suffix ${1-.txt})" + cat - > "$sendfile" + elif [[ -z "$1" ]]; then cmd_help "send" exit 1 + else + sendfile="$1" fi - curl --upload-file "$1" "$URL/" + curl --upload-file "$sendfile" "$URL/" + + if [[ -t 0 ]]; then + rm "$sendfile" + fi } function help_scrot