From e415d24d0d21ec8d92c1344c7f5c3125f73be8a3 Mon Sep 17 00:00:00 2001
From: overflowerror <mail@overflowerror.com>
Date: Fri, 23 Dec 2016 15:21:24 +0100
Subject: [PATCH] init

---
 todo | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 102 insertions(+)
 create mode 100755 todo

diff --git a/todo b/todo
new file mode 100755
index 0000000..9388d93
--- /dev/null
+++ b/todo
@@ -0,0 +1,102 @@
+#!/bin/bash
+
+version="1.2"
+
+mode="show"
+nr=-1
+
+if test "$1" != ""; then
+	case "$1" in
+		-h|--help) cat << EOF
+todo version $version Copyright (c) by overflowerror
+todo manager with zsh integration
+
+usage: $0 [option]
+
+Options:
+	-h      --help		show this help message
+	-s      --show		show current todos
+	-n      --number	get number of unchecked todos
+	-a      --add		add todos interactivly
+	-c ID   --check ID
+	        --done ID	check/uncheck todo item with id ID
+	-d ID   --delete ID	delete todo item with id ID
+
+Calling \`$0\` without any parameter is equvalent to \`$0 --show\`
+
+Have fun with todo.
+EOF
+				exit 0;;
+		-s|--show) ;;
+		-n|--number) mode="number";;
+		-a|--add) mode="add";;
+		-c|"--done"|--check) if test "$2" = ""; then
+				echo "something is missing."
+				exit 1
+			fi; nr="$2"; mode="check";;
+		-d|--delete) if test "$2" = ""; then
+				echo "something is missing."
+				exit 1
+			fi; nr="$2"; mode="delete";;
+		*) echo "Unknown parameter"; exit 1;;
+	esac
+fi
+
+file=~/.todo
+
+if test ! -f "$file"; then
+	touch "$file"
+fi
+
+todo=$(cat "$file")
+
+if test $mode = "add"; then
+	read -e -p "TODO> " line
+	echo "- $line" >> $file
+	exit 0
+fi
+
+if test $mode = "number"; then
+	if test "$todo" = ""; then
+		echo 0;
+	else
+		echo "$todo" | grep "-" | wc -l
+	fi
+	exit 0
+fi
+
+
+if test "$todo" = ""; then
+	exit 5
+fi
+
+if test $mode != "show"; then
+	echo -n > $file
+fi
+
+i=0
+echo "$todo" | while read line; do
+	i=$(($i+1))
+	text=$(echo $line | awk '{$1 = ""; print $0}')
+	check=$(echo $line | awk '{print $1}')
+	case "$mode" in
+		"show") if test "$check" = "+"; then
+				echo -e "$i ✓ \033[9m$text \033[0m"
+			else
+				echo -e "$i   \033[1m$text \033[0m"
+			fi;;
+		"check") if test "$i" = "$nr"; then
+				if test "$check" = "+"; then
+					echo - $text >> $file
+				else
+					echo + $text >> $file
+				fi
+			else
+				echo $line >> $file
+			fi;;	
+		"delete") if test "$i" != "$nr"; then
+				echo $line >> $file
+			fi;;
+		*) ;;
+	esac
+done