about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xbollux50
1 files changed, 31 insertions, 19 deletions
diff --git a/bollux b/bollux index 5ed99ba..b027eab 100755 --- a/bollux +++ b/bollux
@@ -65,6 +65,13 @@ die() { # die [EXIT-CODE] MESSAGE
65 exit "$ec" 65 exit "$ec"
66} 66}
67 67
68# ask the user for input
69ask() { # ask PROMPT [READ_OPT...]
70 prompt="$1"
71 shift
72 read -e -r -u 3 -p "$prompt> " "$@"
73}
74
68# fail if something isn't installed 75# fail if something isn't installed
69require() { hash "$1" 2>/dev/null || die 127 "Requirement '$1' not found."; } 76require() { hash "$1" 2>/dev/null || die 127 "Requirement '$1' not found."; }
70 77
@@ -135,7 +142,7 @@ handle() { # handle URL < RESPONSE
135 1*) # INPUT 142 1*) # INPUT
136 log 3 "Input" 143 log 3 "Input"
137 put "$meta" 144 put "$meta"
138 read -rep "? " 145 ask "?"
139 bollux "$URL?$REPLY" 146 bollux "$URL?$REPLY"
140 ;; 147 ;;
141 2*) # SUCCESS 148 2*) # SUCCESS
@@ -219,44 +226,48 @@ display() { # display MIMETYPE < DOCUMENT
219 # ($LESSOPEN, $LESSCLOSE) 226 # ($LESSOPEN, $LESSCLOSE)
220 ;; 227 ;;
221 *) 228 *)
222 tn="$(mktemp)" 229 download "$URL"
223 dd status=progress >"$tn"
224 fn="$DLDR/${URL##*/}"
225 if [[ -f "$fn" ]]; then
226 log - "Saved '$tn'."
227 else
228 if mv "$tn" "$fn"; then
229 log - "Saved '$fn'."
230 else
231 log 0 "Error saving '$fn'."
232 fi
233 fi
234 ;; 230 ;;
235 esac 231 esac
236} 232}
237 233
234download() { # download URL < FILE
235 tn="$(mktemp)"
236 dd status=progress >"$tn"
237 fn="$DLDR/${URL##*/}"
238 if [[ -f "$fn" ]]; then
239 log - "Saved '$tn'."
240 else
241 if mv "$tn" "$fn"; then
242 log - "Saved '$fn'."
243 else
244 log 0 "Error saving '$fn'."
245 log - "Saved '$tn'."
246 fi
247 fi
248}
249
238### main entry point ### 250### main entry point ###
239bollux() { 251bollux() {
240 bollux_setup 252 # use &3 for user input
253 exec 3<>/dev/tty
241 254
242 if (($# == 1)); then 255 if (($# == 1)); then
243 URL="$1" 256 URL="$1"
244 else 257 else
245 read -r -u 3 -p "GO> " URL 258 ask GO URL
246 fi 259 fi
247 260
248 log 5 "URL : $URL" 261 log 5 "URL : $URL"
249 262
250 request "$URL" >.resource & 263 request "$URL" | handle "$URL"
251 handle "$URL" <.resource
252
253 bollux_cleanup
254} 264}
255 265
256bollux_setup() { 266bollux_setup() {
257 mkfifo .resource 267 mkfifo .resource
258 trap bollux_cleanup INT QUIT TERM EXIT 268 trap bollux_cleanup INT QUIT TERM EXIT
259} 269}
270
260bollux_cleanup() { 271bollux_cleanup() {
261 echo 272 echo
262 rm -f .resource 273 rm -f .resource
@@ -272,4 +283,5 @@ if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
272 require sed 283 require sed
273 284
274 bollux "$@" 285 bollux "$@"
286 echo
275fi 287fi