60 lines
750 B
Bash
Executable file
60 lines
750 B
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Simple todo list
|
|
|
|
FILE="$HOME/.todo"
|
|
|
|
function is_int() {
|
|
return $(test "$@" -eq "$@" > /dev/null 2>&1);
|
|
}
|
|
|
|
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
|
|
;;
|
|
*)
|
|
echo "Command $1 unknown"
|
|
exit 1
|
|
esac
|
|
done
|
|
else
|
|
list
|
|
fi
|
|
exit
|