mirror of
https://github.com/gburd/nix-config.git
synced 2024-11-20 10:36:25 +00:00
f3fd89af54
Many thangs to the hard work and generous availability of: git@github.com:Misterio77/nix-config.git
78 lines
1.8 KiB
Bash
78 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
# Tally counter that also serves as stopwatch
|
|
|
|
now="$(date --rfc-3339="ns")"
|
|
|
|
XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
|
|
TLY_DIR="${TLY_DATA_DIR:-$XDG_DATA_HOME/tly}"
|
|
TLY_MAX_FILES="${TLY_MAX_FILES:-30}"
|
|
|
|
operation="${1:-}"
|
|
list="${2:-}"
|
|
|
|
if [ -z "${operation:-}" ]; then
|
|
echo "No operation specified" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "${list:-}" ]; then
|
|
list="default"
|
|
fi
|
|
list_file="${TLY_DIR}/$list"
|
|
|
|
mkdir -p "$TLY_DIR"
|
|
touch "$list_file"
|
|
|
|
case "$operation" in
|
|
# Add a timestamp
|
|
a | add | ap | append)
|
|
echo "$now" >> "$list_file"
|
|
;;
|
|
# Add a comment
|
|
c | comment)
|
|
read -rp 'comment: ' comment
|
|
if [ -z "${comment:-}" ]; then
|
|
echo "Empty comment, skipping." >&2
|
|
exit 2
|
|
fi
|
|
echo "# $comment" >> "$list_file"
|
|
;;
|
|
# Remove last line
|
|
u | undo)
|
|
tmp="$(mktemp)"
|
|
mv "$list_file" "$tmp"
|
|
head -n -1 "$tmp" > "$list_file"
|
|
rm "$tmp"
|
|
;;
|
|
# Rotate the file
|
|
r | reset)
|
|
for suff in $(seq "$TLY_MAX_FILES" -1 1); do
|
|
if [ -s "$list_file.${suff}" ]; then
|
|
((nxt = suff + 1))
|
|
mv -f "$list_file.${suff}" "$list_file.${nxt}"
|
|
fi
|
|
done
|
|
if [ -s "$list_file" ] ; then
|
|
mv -f "$list_file" "$list_file.1"
|
|
fi
|
|
;;
|
|
|
|
# Get number of entries
|
|
n | number)
|
|
grep -cv "^#" "$list_file"
|
|
;;
|
|
# Get list of entries
|
|
l | list | s | show)
|
|
cat "$list_file"
|
|
;;
|
|
# Get time since last entry
|
|
t | time)
|
|
if [ -s "$list_file" ] ; then
|
|
last="$(grep -v "^#" "$list_file" | tail -1)"
|
|
diff="$(echo "$(date +%s.%N) - $(date +%s.%N -d "$last")" | bc -l)"
|
|
printf "%.2fs\n" "$diff"
|
|
else
|
|
echo "0s"
|
|
fi
|
|
;;
|
|
esac
|