diff options
Diffstat (limited to 'src/remembering.in')
| -rwxr-xr-x | src/remembering.in | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/src/remembering.in b/src/remembering.in deleted file mode 100755 index 89e9453..0000000 --- a/src/remembering.in +++ /dev/null @@ -1,165 +0,0 @@ -#!/bin/sh -set -eu - - -usage() { - cat <<-'EOF' - Usage: - @NAME@ [-p PROFILE] -- COMMAND... - @NAME@ -h|-V - EOF -} - -help() { - cat <<-'EOF' - - Options: - -p PROFILE profile to be used for gathering and storing - data (default: create one based on $PWD) - -h, --help show this message - -V, --version print the version number - - COMMAND command to be ran, reading from - STDIN, writing to STDOUT - - - Explanation FIXME. - - See "man @NAME@" for more information. - - - Examples: - - FIXME: - - $ FIXME - EOF -} - -version() { - printf '%s %s %s\n' '@NAME@' '@VERSION@' '@DATE@' -} - - -uuid() { - od -xN20 /dev/urandom | - head -n1 | - awk '{OFS="-"; print $2$3,$4,$5,$6,$7$8$9}' -} - -tmpname() { - echo "${TMPDIR:-/tmp}/@NAME@.tmpfile.$(uuid)" -} - -mkstemp() { - name="$(tmpname)" - touch "$name" - echo "$name" -} - - -for flag in "$@"; do - case "$flag" in - --) - break - ;; - --help) - usage - help - exit - ;; - --version) - version - exit - ;; - *) - ;; - esac -done - -PROFILE_NAME="$(pwd | tr '/' '!')" -while getopts 'p:hV' flag; do - case "$flag" in - p) - PROFILE_NAME="$OPTARG" - ;; - h) - usage - help - exit - ;; - V) - version - exit - ;; - *) - usage >&2 - exit 2 - ;; - esac -done -shift $((OPTIND - 1)) - - -if [ $# = 0 ]; then - printf 'Missing "-- COMMAND"\n' >&2 - usage >&2 - exit 2 -fi - -NAME='@NAME@' -PROFILE="${XDG_DATA_HOME:-$HOME/.local/share}"/$NAME/"$PROFILE_NAME" - -if [ ! -e "$PROFILE" ]; then - mkdir -p "$(dirname "$PROFILE")" - touch "$PROFILE" -fi - -NEXT_PROFILE="$PROFILE".tmp -MERGED="$(mkstemp)" -FILTERED="$(mkstemp)" -trap 'rm -f "$NEXT_PROFILE" "$MERGED" "$FILTERED"' EXIT -CHOICE="$( - cat - | - sed 's/^/0 stdin /' | - sort -k3 -k1nr - "$PROFILE" | - tee "$MERGED" | - awk ' - { rest = substr($0, 3 + length($1) + length($2)) } - $2 == "profile" { seen[rest] += $1 } - $2 == "stdin" { printf "%s %s\n", seen[rest]+0, rest } - ' | - sort -k1nr | - cut -d' ' -f2- | - "$@" -)" - -if [ -z "$CHOICE" ]; then - exit -fi - -< "$MERGED" \ - cut -d' ' -f1,3- | - uniq -f1 | - awk -vCHOICE="$CHOICE" ' - BEGIN { inc = 1 } - - { rest = substr($0, 2 + length($1)) } - - rest == CHOICE { - printf "%s profile %s\n", $1 + inc, rest - found = 1 - next - } - - { printf "%s profile %s\n", $1, rest } - - END { - if (!found) { - printf "%s profile %s\n", 0 + inc, CHOICE - } - } - ' > "$NEXT_PROFILE" - -mv "$NEXT_PROFILE" "$PROFILE" -printf '%s\n' "$CHOICE" |
