60 lines
1.4 KiB
Bash
Executable file
60 lines
1.4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
action=$1
|
|
shift
|
|
|
|
function usage {
|
|
echo " Customized repeat:"
|
|
echo " repeat ITEM "
|
|
echo " mark an item complete then re-enter it"
|
|
echo " repeat ITEM DAYS"
|
|
echo " mark an item as complete then re-enter it with a date DAYS from now"
|
|
echo " repeat ITEM +DAYS"
|
|
echo " mark an item with a date as complete then re-enter it with a date DAYS from the due date"
|
|
echo ""
|
|
exit
|
|
}
|
|
|
|
[ "$action" = "usage" ] && usage
|
|
|
|
# make sure we have an item number
|
|
ITEM=$1
|
|
if ! [[ "$ITEM" =~ ^[0-9]+$ ]]; then
|
|
echo "Error! Usage:"
|
|
usage
|
|
exit
|
|
fi
|
|
|
|
# pull the line from the todo file
|
|
LINE=$(sed "$ITEM!d" "$TODO_FILE")
|
|
|
|
if [[ "$LINE" =~ ^\([A-Z]\) ]]; then
|
|
LINE=$(echo "$LINE" | cut -f2- -d ' ') # cut off the priority
|
|
fi
|
|
|
|
if [[ "$LINE" =~ ^[0-9][0-9][0-9][0-9] ]]; then
|
|
DATE=$(echo "$LINE" | cut -f1 -d ' ') # identify the date
|
|
LINE=$(echo "$LINE" | cut -f2- -d ' ') # cut off the date
|
|
else
|
|
DATE=""
|
|
fi
|
|
|
|
DAYS=$2
|
|
if [[ "$DAYS" != "" ]]; then
|
|
if [[ $DAYS == \+* ]]; then
|
|
if [[ "$DATE" != "" ]]; then
|
|
# increase the due date
|
|
DATE=`date -d $DATE" "$DAYS" days" +%Y-%m-%d`
|
|
fi
|
|
elif [[ $DAYS == [0-9]* ]]; then
|
|
# make new date relative from now
|
|
DATE=`date -d $DAYS" days" +%Y-%m-%d`
|
|
fi
|
|
LINE=$DATE" "$LINE # and append to the line
|
|
fi
|
|
|
|
if [[ "$LINE" != "" ]] ; then
|
|
$DO && "$TODO_SH" command do "$ITEM"
|
|
$DO && "$TODO_SH" command add "$LINE"
|
|
fi
|
|
|