aboutsummaryrefslogtreecommitdiff
path: root/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'tasks')
-rwxr-xr-xtasks57
1 files changed, 57 insertions, 0 deletions
diff --git a/tasks b/tasks
new file mode 100755
index 0000000..4ab3211
--- /dev/null
+++ b/tasks
@@ -0,0 +1,57 @@
+#!/bin/bash
+#
+# A taskwarrior wrapper.
+#
+
+# Basic params
+CONFIG="$HOME/.config/tasks"
+BASENAME="`basename $0`"
+PROJECT="$1"
+
+# Config
+if [ -e "$CONFIG" ] ; then
+ source $CONFIG
+fi
+
+# Custom params
+TODO_MAXDEPTH="2"
+WORKPATH="${WORKPATH:=~/}"
+FOLDERS="`echo $WORKPATH | tr ':' ' ' | sed -e "s|~|$HOME|g"`"
+
+# Check if first param is a project
+if [ ! -z "$PROJECT" ] && cd $PROJECT &> /dev/null || false; then
+ IS_PROJECT="true"
+ shift
+else
+ IS_PROJECT="false"
+fi
+
+cd - &> /dev/null
+
+# Check if project exists
+if [ "$IS_PROJECT" == "true" ]; then
+ cd $PROJECT &> /dev/null || exit 1
+
+ # Get full path
+ CWD="`pwd`"
+
+ # Call taskwarrior
+ if [ -d "$CWD/.task" ]; then
+ task rc.data.location=$CWD/.task rc.verbose=nothing $*
+ fi
+else
+ for folder in $FOLDERS; do
+ if [ ! -d "$folder" ]; then
+ continue
+ fi
+
+ find $folder/ -maxdepth $TODO_MAXDEPTH -xtype d -iname '.task' | while read task; do
+ if [ -z "$SILENT" ]; then
+ echo "Tasks from $task:"
+ echo ""
+ fi
+
+ task rc.data.location=$task rc.verbose=nothing $*
+ done
+ done
+fi