Blame


1 b9a2c057 2022-07-17 rnkn #!/bin/sh
2 b9a2c057 2022-07-17 rnkn
3 7bc3108e 2022-08-04 rnkn set -o pipefail
4 b9a2c057 2022-07-17 rnkn program=$(basename "$0")
5 b9a2c057 2022-07-17 rnkn fail() { echo "$1"; exit 1; }
6 b9a2c057 2022-07-17 rnkn
7 5215d426 2022-08-04 rnkn for f in *; do
8 5215d426 2022-08-04 rnkn expr "$f" : [Tt][Oo][Dd][Oo] > /dev/null && todo_file="$f" && break
9 5215d426 2022-08-04 rnkn done
10 b9a2c057 2022-07-17 rnkn
11 94b5d49c 2022-08-04 rnkn [ -n $todo_file ] || todo_file="${TODO_FILE:-${PWD}/TODO}"
12 b9a2c057 2022-07-17 rnkn
13 94b5d49c 2022-08-04 rnkn todo_alt_file="${TODO_ALT_FILE:-${PWD}/REMEMBER}"
14 94b5d49c 2022-08-04 rnkn done_file="${DONE_FILE:-${PWD}/DONE}"
15 94b5d49c 2022-08-04 rnkn
16 b9a2c057 2022-07-17 rnkn usage() {
17 84d6904d 2022-07-21 rnkn echo "usage: $program TASK"
18 84d6904d 2022-07-21 rnkn echo " $program [-d LINENUM] [-e] [-Ss QUERY]"
19 b9a2c057 2022-07-17 rnkn }
20 b9a2c057 2022-07-17 rnkn
21 cd1e9246 2022-08-04 rnkn # t_done(linenum, done)
22 b9a2c057 2022-07-17 rnkn t_done() {
23 cd1e9246 2022-08-04 rnkn [ -f "$todo_file" ] || fail "File not found"
24 cd1e9246 2022-08-04 rnkn linenum=$1; done=$2
25 b9a2c057 2022-07-17 rnkn tmpfile=$(mktemp)
26 cd1e9246 2022-08-04 rnkn if [ "$done" -eq 1 ]; then
27 cd1e9246 2022-08-04 rnkn sed -n "${linenum}p" "$todo_file" >> "$done_file"
28 cd1e9246 2022-08-04 rnkn fi
29 cd1e9246 2022-08-04 rnkn sed "${linenum}d" "$todo_file" > "$tmpfile"
30 84d6904d 2022-07-21 rnkn mv "$todo_file" "${todo_file}~"
31 b9a2c057 2022-07-17 rnkn mv "$tmpfile" "$todo_file"
32 b9a2c057 2022-07-17 rnkn }
33 b9a2c057 2022-07-17 rnkn
34 b9a2c057 2022-07-17 rnkn t_print() {
35 f4953d17 2022-08-04 rnkn [ -f "$todo_file" ] || fail "File not found"
36 b9a2c057 2022-07-17 rnkn lines=$(wc -l < "$todo_file")
37 b9a2c057 2022-07-17 rnkn width=$(echo $lines | wc -c)
38 84d6904d 2022-07-21 rnkn nl -s' ' -w"$width" "$todo_file"
39 b9a2c057 2022-07-17 rnkn }
40 b9a2c057 2022-07-17 rnkn
41 b9a2c057 2022-07-17 rnkn main() {
42 84d6904d 2022-07-21 rnkn if getopts hed:S:s: opt; then
43 b9a2c057 2022-07-17 rnkn case "$opt" in
44 b9a2c057 2022-07-17 rnkn (e) $EDITOR "$todo_file"
45 b9a2c057 2022-07-17 rnkn exit ;;
46 b9a2c057 2022-07-17 rnkn (d) t_done "$OPTARG"
47 b9a2c057 2022-07-17 rnkn exit ;;
48 84d6904d 2022-07-21 rnkn (S) t_print | grep -iw "$OPTARG"
49 84d6904d 2022-07-21 rnkn exit ;;
50 84d6904d 2022-07-21 rnkn (s) t_print | grep -i "$OPTARG"
51 84d6904d 2022-07-21 rnkn exit ;;
52 b9a2c057 2022-07-17 rnkn (h) usage
53 b9a2c057 2022-07-17 rnkn exit ;;
54 b9a2c057 2022-07-17 rnkn (?) usage
55 b9a2c057 2022-07-17 rnkn exit 1 ;;
56 b9a2c057 2022-07-17 rnkn esac
57 b9a2c057 2022-07-17 rnkn elif test -n "$1"; then
58 b9a2c057 2022-07-17 rnkn echo "$@" >> "$todo_file"
59 b9a2c057 2022-07-17 rnkn else
60 b9a2c057 2022-07-17 rnkn t_print
61 b9a2c057 2022-07-17 rnkn fi
62 b9a2c057 2022-07-17 rnkn }
63 b9a2c057 2022-07-17 rnkn
64 b9a2c057 2022-07-17 rnkn main "$@"