Skip to content

Commit 867ade5

Browse files
tpikonenkarbassi
authored andcommitted
new: Add default priority variable TODOTXT_PRIORITY_ON_ADD. (#246)
Adds the config / env variable `TODOTXT_PRIORITY_ON_ADD`, which when set to one of the capital letters `A` to `Z` is given as a priority to a new task, if a priority is not given on command line.
1 parent 14f5de1 commit 867ade5

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

tests/t1040-add-priority.sh

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash
2+
3+
test_description='test the priority on add feature'
4+
. ./test-lib.sh
5+
6+
## Normal use case
7+
echo "export TODOTXT_PRIORITY_ON_ADD=A" >> todo.cfg
8+
9+
test_todo_session 'config file priority' <<EOF
10+
>>> todo.sh add take out the trash
11+
1 (A) take out the trash
12+
TODO: 1 added.
13+
14+
>>> todo.sh -p list
15+
1 (A) take out the trash
16+
--
17+
TODO: 1 of 1 tasks shown
18+
EOF
19+
20+
## Wrong value in config var
21+
echo "export TODOTXT_PRIORITY_ON_ADD=1" >> todo.cfg
22+
23+
test_todo_session 'config file wrong priority' <<EOF
24+
>>> todo.sh add fail to take out the trash
25+
=== 1
26+
TODOTXT_PRIORITY_ON_ADD should be a capital letter from A to Z (it is now "1").
27+
28+
>>> todo.sh -p list
29+
=== 1
30+
TODOTXT_PRIORITY_ON_ADD should be a capital letter from A to Z (it is now "1").
31+
EOF
32+
33+
test_done

todo.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ help()
142142
TODOTXT_PRESERVE_LINE_NUMBERS is same as option -n (0)/-N (1)
143143
TODOTXT_PLAIN is same as option -p (1)/-c (0)
144144
TODOTXT_DATE_ON_ADD is same as option -t (1)/-T (0)
145+
TODOTXT_PRIORITY_ON_ADD=pri default priority A-Z
145146
TODOTXT_VERBOSE=1 is same as option -v
146147
TODOTXT_DISABLE_FILTER=1 is same as option -x
147148
TODOTXT_DEFAULT_ACTION="" run this when called with no arguments
@@ -482,6 +483,7 @@ OVR_TODOTXT_FORCE="$TODOTXT_FORCE"
482483
OVR_TODOTXT_PRESERVE_LINE_NUMBERS="$TODOTXT_PRESERVE_LINE_NUMBERS"
483484
OVR_TODOTXT_PLAIN="$TODOTXT_PLAIN"
484485
OVR_TODOTXT_DATE_ON_ADD="$TODOTXT_DATE_ON_ADD"
486+
OVR_TODOTXT_PRIORITY_ON_ADD="$TODOTXT_PRIORITY_ON_ADD"
485487
OVR_TODOTXT_DISABLE_FILTER="$TODOTXT_DISABLE_FILTER"
486488
OVR_TODOTXT_VERBOSE="$TODOTXT_VERBOSE"
487489
OVR_TODOTXT_DEFAULT_ACTION="$TODOTXT_DEFAULT_ACTION"
@@ -601,6 +603,7 @@ TODOTXT_FORCE=${TODOTXT_FORCE:-0}
601603
TODOTXT_PRESERVE_LINE_NUMBERS=${TODOTXT_PRESERVE_LINE_NUMBERS:-1}
602604
TODOTXT_AUTO_ARCHIVE=${TODOTXT_AUTO_ARCHIVE:-1}
603605
TODOTXT_DATE_ON_ADD=${TODOTXT_DATE_ON_ADD:-0}
606+
TODOTXT_PRIORITY_ON_ADD=${TODOTXT_PRIORITY_ON_ADD:-}
604607
TODOTXT_DEFAULT_ACTION=${TODOTXT_DEFAULT_ACTION:-}
605608
TODOTXT_SORT_COMMAND=${TODOTXT_SORT_COMMAND:-env LC_COLLATE=C sort -f -k2}
606609
TODOTXT_DISABLE_FILTER=${TODOTXT_DISABLE_FILTER:-}
@@ -740,6 +743,9 @@ fi
740743
if [ -n "$OVR_TODOTXT_DATE_ON_ADD" ] ; then
741744
TODOTXT_DATE_ON_ADD="$OVR_TODOTXT_DATE_ON_ADD"
742745
fi
746+
if [ -n "$OVR_TODOTXT_PRIORITY_ON_ADD" ] ; then
747+
TODOTXT_PRIORITY_ON_ADD="$OVR_TODOTXT_PRIORITY_ON_ADD"
748+
fi
743749
if [ -n "$OVR_TODOTXT_DISABLE_FILTER" ] ; then
744750
TODOTXT_DISABLE_FILTER="$OVR_TODOTXT_DISABLE_FILTER"
745751
fi
@@ -761,6 +767,9 @@ ACTION=${1:-$TODOTXT_DEFAULT_ACTION}
761767
[ -z "$ACTION" ] && usage
762768
[ -d "$TODO_DIR" ] || mkdir -p $TODO_DIR 2> /dev/null || dieWithHelp "$1" "Fatal Error: $TODO_DIR is not a directory"
763769
( cd "$TODO_DIR" ) || dieWithHelp "$1" "Fatal Error: Unable to cd to $TODO_DIR"
770+
[ -z "$TODOTXT_PRIORITY_ON_ADD" ] \
771+
|| echo "$TODOTXT_PRIORITY_ON_ADD" | grep -q "^[A-Z]$" \
772+
|| die "TODOTXT_PRIORITY_ON_ADD should be a capital letter from A to Z (it is now \"$TODOTXT_PRIORITY_ON_ADD\")."
764773

765774
[ -f "$TODO_FILE" -o -c "$TODO_FILE" ] || > "$TODO_FILE"
766775
[ -f "$DONE_FILE" -o -c "$DONE_FILE" ] || > "$DONE_FILE"
@@ -790,6 +799,11 @@ _addto() {
790799
now=$(date '+%Y-%m-%d')
791800
input=$(echo "$input" | sed -e 's/^\(([A-Z]) \)\{0,1\}/\1'"$now /")
792801
fi
802+
if [[ -n "$TODOTXT_PRIORITY_ON_ADD" ]]; then
803+
if ! echo "$input" | grep -q '^([A-Z])'; then
804+
input=$(echo -n "($TODOTXT_PRIORITY_ON_ADD) " ; echo "$input")
805+
fi
806+
fi
793807
echo "$input" >> "$file"
794808
if [ $TODOTXT_VERBOSE -gt 0 ]; then
795809
TASKNUM=$(sed -n '$ =' "$file")

0 commit comments

Comments
 (0)