X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=56e0c2b7a34457404fc23e26ea4e934bcaf783ec;hb=HEAD;hp=cbd8236a5ed46589ed29b9fe63b38bf885c0dab7;hpb=a76a676bc46f68400348e64a549f01a79eac7292;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index cbd8236..56e0c2b 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -1,4 +1,4 @@ -# +#! /bin/bash ## open : string -> unit ## @@ -26,74 +26,31 @@ notify_done() { fi } -## p : string -> unit -p() { - local -r usage='Usage: p [FILE] NAME' - local name - local file - - case "$#" in - 0) - echo "$usage" >&2 - return 1;; - 1) - file=~/._p/p - name="$1";; - 2) - file="$1" - name="$2";; - *) - echo "$usage" >&2 - return 1;; - esac +_dl_script() { +cat << EOF +#! /bin/bash +wget -c \$(< ./url) +EOF +} - awk \ - -v _s="$name" \ - ' - BEGIN {_s = tolower(_s)} - - # TODO fzf/dmenu select instead of searching: - /^[a-zA-Z]/ && tolower($1) ~ _s && NF >= 2 { - n++ - s = $1 - p = $NF - if (NF == 2) { - e = "" - u = "" - } else if (NF == 3) { - e = $2 - u = "" - } else { - e = $2 - u = $3 - } # TODO What would NF > 4 mean? - - printf("%d [O] s:\"%s\", e:\"%s\", u:\"%s\"\n", n, s, e, u) > "/dev/stderr" - if (match(u, "@")) { - tmp = e - e = u - u = tmp - printf("%d [C] s:\"%s\", e:\"%s\", u:\"%s\"\n", n, s, e, u) > "/dev/stderr" - } - ps[n] = p - } +dl() { + local -r name="$1" + local -r url="$2" - END { - printf "%s", ps[n] # XXX Intentionally avoiding newline in the result. - if (n == 1) { - exit 0 - } else if (n == 0) { - printf "[ERROR] Found nothing.\n" > "/dev/stderr" - exit 1 - } else if (n > 1) { - # TODO fzf-select which of the records the user (ahem, me) wants. - printf "[WARNING] Found more than one record. Selecting the last one.\n" > "/dev/stderr" - exit 0 - } - } - ' \ - "$file" \ - | xsel -i -b -t 30000 + local -r timestamp="$(date --iso-8601=ns)" + local -r dir="$HOME"/dl/adhoc/"$timestamp"--"$name" + local -r url_file_path="${dir}/url" + local -r dl_file_path="${dir}/dl" + + mkdir -p "$dir" + touch "$url_file_path" + if [ "$url" != '' ] + then + echo "$url" > "$url_file_path" + fi + _dl_script > "$dl_file_path" + chmod +x "$dl_file_path" + cd "$dir" } ## web search