From 24b546aa76dad714036e18dd6204c7688056c4a7 Mon Sep 17 00:00:00 2001 From: ensa Date: Tue, 26 May 2020 23:49:07 -0700 Subject: initial commit all the relevant info is present in README, TODO, LICENSE, and todo. --- todo | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100755 todo (limited to 'todo') diff --git a/todo b/todo new file mode 100755 index 0000000..7243f77 --- /dev/null +++ b/todo @@ -0,0 +1,70 @@ +#!/bin/sh + +#preset vars +EDITOR=${EDITOR:-vi} +TODO=${TODO:-$HOME/todo} +#empty opt vars +ADD="" +DELETE="" +NUM="" +CHANGE="" +ARCHIVE="" + +ug_err() +{ + echo "${1}" 1>&2 && return "${2:-1}" +} +usage() +{ + ug_err "usage: ${0##*/} [[-e | -x ] | [-n num] [-a message | -d [num]] + -e edit todo in $EDITOR + -x show completed tasks + -n num operate on line num + -a string add string to todo + -d [num] delete line num" +} +while getopts a:d:en:x arg; do + case ${arg} in + a) ADD=${OPTARG};; + d) DELETE=true + NUM=${OPTARG};; + e) CHANGE=true;; + n) NUM=${OPTARG};; + x) ARCHIVE=true;; + *) usage;; + esac +done +#satisfies -a +if [ -n "$ADD" ]; then + if [ -n "$NUM" ]; then + TMP=$(mktemp) + sed "${NUM}i\\ +$ADD +" < "$TODO" > "$TMP" && mv "$TMP" "$TODO" + else + printf '%s\n' "$ADD" >> "$TODO" + fi + exit +fi +#satisfies -d +if [ -n "$DELETE" ]; then + TMP=$(mktemp) + date +"%F %T - $(sed -n "${NUM}p" "$TODO")" >> "${TODO}.complete" + sed "${NUM}D" < "$TODO" > "$TMP" && mv "$TMP" "$TODO" + exit +fi +#satisfies -e +if [ -n "$CHANGE" ]; then + "$EDITOR" "$TODO" + exit +fi +#satisfies -x and no flags +if [ -z "$ADD" ] && [ -z "$DELETE" ] && [ -z "$CHANGE" ]; then +if [ -n "$ARCHIVE" ]; then + ! [ -e "${TODO}.complete" ] && touch "${TODO}.complete" + cat < "${TODO}.complete" +elif [ -z "$*" ]; then + nl "${TODO}" +fi +exit +fi -- cgit 1.4.1-2-gfad0