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.
|
|
|
#!/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
|