aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2018-01-15 12:24:02 +1300
committerTom Ryder <tom@sanctum.geek.nz>2018-01-15 12:24:02 +1300
commit4da77a00838beb51d6ccfc2a3352a76ddddd74cc (patch)
treef543172c845a42305ae4fc75744d9a7c09688f7d
parent21a37405d2fcc46908e37487f345dd6cdac20fa9 (diff)
parentedf0a0305169a57a6d9ec49df8628e8f213b9a86 (diff)
downloaddotfiles-4da77a00838beb51d6ccfc2a3352a76ddddd74cc.tar.gz
dotfiles-4da77a00838beb51d6ccfc2a3352a76ddddd74cc.zip
Merge branch 'feature/bin-review' into develop
* feature/bin-review: Refactor clog(1df), allow args and non-term stdin Reimplement bl(1df) in Awk
-rw-r--r--bin/bl.awk5
-rw-r--r--bin/bl.sh10
-rw-r--r--bin/clog.sh23
-rw-r--r--man/man1/clog.1df20
4 files changed, 32 insertions, 26 deletions
diff --git a/bin/bl.awk b/bin/bl.awk
new file mode 100644
index 00000000..0be2fc6e
--- /dev/null
+++ b/bin/bl.awk
@@ -0,0 +1,5 @@
+# Generate blank lines
+BEGIN {
+ while (ARGV[1]--)
+ print ""
+}
diff --git a/bin/bl.sh b/bin/bl.sh
deleted file mode 100644
index 6dd3d687..00000000
--- a/bin/bl.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-# Generate blank lines
-if [ "$#" -ne 1 ] || [ "$1" -lt 0 ] ; then
- printf >&2 'bl: Non-negative line count needed as sole argument\n'
- exit 2
-fi
-n=0
-while [ "$n" -lt "${1:-0}" ] ; do
- printf '\n'
- n=$((n+1))
-done
diff --git a/bin/clog.sh b/bin/clog.sh
index 1b612d68..81bfd744 100644
--- a/bin/clog.sh
+++ b/bin/clog.sh
@@ -1,17 +1,18 @@
# Record a timestamped message to a logfile, defaulting to ~/.clog
self=clog
-# Ignore arguments
-set --
+# Build the cat(1) command we'll run, wrapping it in rlwrap(1) if available and
+# applicable.
+if [ "$#" -eq 0 ] && [ -t 0 ] && command -v rlwrap >/dev/null 2>&1 ; then
+ set -- rlwrap --history-filename=/dev/null cat -- "${@:--}"
+else
+ set -- cat -- "${@:--}"
+fi
-# If we have rlwrap, quietly use it
-command -v rlwrap >/dev/null 2>&1 &&
- set -- rlwrap --history-filename=/dev/null -C "$self" "$@"
-
-# Write the date, the standard input (rlwrapped if applicable), and two dashes
-# to $CLOG, defaulting to ~/.clog.
+# Write the date, the input, and two dashes to $CLOG, defaulting to ~/.clog.
+clog=${CLOG:-"$HOME"/.clog}
{
date
- "$@" cat -
- printf '%s\n' --
-} >>"${CLOG:-"$HOME"/.clog}"
+ "$@"
+ printf -- '--\n'
+} >> "$clog"
diff --git a/man/man1/clog.1df b/man/man1/clog.1df
index 43193076..f9300347 100644
--- a/man/man1/clog.1df
+++ b/man/man1/clog.1df
@@ -3,18 +3,28 @@
.B clog
\- record timestamped logs in a file
.SH SYNOPSIS
+$
.B clog
.br
-getting real tired of all this overengineering
+Getting real tired of all this overengineering.
.br
^D
+.br
+$
+.B clog
+file1 file2
+.br
+$
+command |
+.B clog
.SH DESCRIPTION
.B clog
-receives a message on stdin, timestamps it with a leading date(1), and writes
-it to the file with path in environment variable CLOG, defaulting to ~/.clog,
-terminating each entry with two hyphens.
+receives a message on stdin or from the file arguments, timestamps it with a
+leading date(1), and writes it to the file with path in environment variable
+CLOG, defaulting to ~/.clog, terminating each entry with two hyphens.
.P
-If rlwrap(1) is found, it will be used for the line editing. If not, just the
+If there are no files to read and standard input is coming from a terminal, and
+rlwrap(1) is found, it will be used for the line editing. If not, just the
terminal's cooked mode will be used.
.SH AUTHOR
Tom Ryder <tom@sanctum.geek.nz>