You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.1 KiB
76 lines
1.1 KiB
#!/usr/bin/env bash |
|
|
|
# Simple todo list |
|
|
|
FILE="$HOME/.todo" |
|
|
|
function is_int() { |
|
return $(test "$@" -eq "$@" > /dev/null 2>&1); |
|
} |
|
|
|
function help(){ |
|
echo "TODO" |
|
echo "====" |
|
echo "Simple todo list manager" |
|
echo "" |
|
( |
|
echo "list|l List contents of to do list" |
|
echo "add|a \"Description\" Add an item to the todo list" |
|
echo "delete|del|d \"item id\" Delete an item from the todo list" |
|
) | column -t -s' ' |
|
|
|
} |
|
function list(){ |
|
if [ -f "$FILE" ]; then |
|
awk '{printf("%5d : %s\n", NR,$0)}' "$FILE" |
|
else |
|
echo "$FILE does not exist" |
|
exit 1 |
|
fi |
|
} |
|
|
|
function add(){ |
|
echo "$@" >> "$FILE" |
|
} |
|
|
|
function delete(){ |
|
while [ -n "$1" ]; do |
|
if is_int "$1"; then |
|
sed -i "${1}d" "$FILE" |
|
fi |
|
shift |
|
done |
|
exit |
|
} |
|
|
|
if [ -n "$1" ]; then |
|
while [ -n "$1" ]; do |
|
case "$1" in |
|
"list"|"l") |
|
shift |
|
list "$@" |
|
exit 0 |
|
;; |
|
"add"|"a") |
|
shift |
|
add "$@" |
|
exit 0 |
|
;; |
|
"delete"|"del"|"d") |
|
shift |
|
delete "$@" |
|
exit 0 |
|
;; |
|
"help"|"--help"|"-h") |
|
help |
|
exit 0 |
|
;; |
|
*) |
|
echo "Command $1 unknown" |
|
exit 1 |
|
esac |
|
done |
|
else |
|
list |
|
fi |
|
exit
|
|
|