|
@@ -1,4 +1,6 @@
|
|
|
#!/bin/bash
|
|
|
+# Copyright (c) Daniel Sheffield 2024 - 2025
|
|
|
+
|
|
|
set -euo pipefail
|
|
|
if [ "$#" == "0" ]
|
|
|
then
|
|
@@ -7,14 +9,14 @@ then
|
|
|
fi
|
|
|
|
|
|
. "${BASH_SOURCE[0]%/*}"/helpers/common.sh
|
|
|
+. "${BASH_SOURCE[0]%/*}"/helpers/awk.sh
|
|
|
+. "${BASH_SOURCE[0]%/*}"/helpers/fzf.sh
|
|
|
|
|
|
stderr_deps=/dev/null
|
|
|
# NOTE: uncomment to see err output from `which` (if any)
|
|
|
#stderr_deps='/proc/self/fd/2'
|
|
|
check_deps 3>&2 2>"$stderr_deps" 1>/dev/null
|
|
|
|
|
|
-LOG_ROOT="$HOME"/.local/var/log/shell # source this
|
|
|
-
|
|
|
EXIT_SUCCESS=false
|
|
|
LIST_MODE=false
|
|
|
CMD_STRING=false
|
|
@@ -125,68 +127,6 @@ shift $((OPTIND-1))
|
|
|
|
|
|
validate "$@"
|
|
|
|
|
|
-fzf_rw0_inplace_preview () {
|
|
|
- # NOTE: to preview and select captured command directories
|
|
|
- header_len="$1"
|
|
|
- # shellcheck disable=SC2016
|
|
|
- fzf \
|
|
|
- --read0 --print0 \
|
|
|
- -m \
|
|
|
- --no-sort \
|
|
|
- -d / \
|
|
|
- --preview-window="~$header_len" \
|
|
|
- --preview='cat {}/info; head -n "$LINES" {}/dat' \
|
|
|
- && :
|
|
|
-}
|
|
|
-
|
|
|
-awk_strip_first_path_part_script () {
|
|
|
- cat <<'EOF'
|
|
|
-{
|
|
|
- for (i=2; i<=NF; i++)
|
|
|
- printf "%s%s", $(i), (i<NF ? OFS : ORS)
|
|
|
-}
|
|
|
-EOF
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-awk_rw0_strip_first_path_part () {
|
|
|
- # NOTE: ./a/b/c -> a/b/c (null delimited)
|
|
|
- awk \
|
|
|
- -v FS='/' -v RS='\0' \
|
|
|
- -v OFS='/' -v ORS='\0' \
|
|
|
- "$(awk_strip_first_path_part_script)" \
|
|
|
- && :
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-awk_r0_add_prefix () {
|
|
|
- # NOTE: some-string -> <prefix>some-string (null delimited)
|
|
|
- : "${2?awk_r0_add_prefix requires exactly two positional args}"
|
|
|
- : "${1:?awk_r0_add_prefix output record separator must be set and non-empty}"
|
|
|
- [ "${1:+DefinedNotEmpty}" == "DefinedNotEmpty" ]
|
|
|
- [ "${2+DefinedMaybeEmpty}" == "DefinedMaybeEmpty" ]
|
|
|
- awk \
|
|
|
- -v prefix="$2/" \
|
|
|
- -v RS='\0' \
|
|
|
- -v ORS="$1" \
|
|
|
- '{print prefix $0}' \
|
|
|
- && :
|
|
|
-}
|
|
|
-
|
|
|
-awk_r0_add_suffix () {
|
|
|
- # NOTE: some-string -> some-string<suffix> (null delimited)
|
|
|
- : "${2?awk_r0_add_suffix requires exactly two positional args}"
|
|
|
- : "${1:?awk_r0_add_suffix output record separator must be set and non-empty}"
|
|
|
- [ "${1:+DefinedNotEmpty}" == "DefinedNotEmpty" ]
|
|
|
- [ "${2+DefinedMaybeEmpty}" == "DefinedMaybeEmpty" ]
|
|
|
- awk \
|
|
|
- -v suffix="/$2" \
|
|
|
- -v RS='\0' \
|
|
|
- -v ORS="$1" \
|
|
|
- '{print $0 suffix}' \
|
|
|
- && :
|
|
|
-}
|
|
|
-
|
|
|
sort_rw0 () {
|
|
|
# NOTE: sort by program, or timestamp
|
|
|
if [ "$1" = "prog" ]
|