]> gitweb.fluxo.info Git - scripts.git/commitdiff
Adds tasks wrapper integrated into todo script
authorSilvio Rhatto <rhatto@riseup.net>
Tue, 22 May 2018 17:05:10 +0000 (14:05 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Tue, 22 May 2018 17:05:10 +0000 (14:05 -0300)
tasks [new file with mode: 0755]
todo

diff --git a/tasks b/tasks
new file mode 100755 (executable)
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
diff --git a/todo b/todo
index 42aaf1981726960940f88f9f9a8f957fa009b61b..19eeb241fd570874ed70d146ded12212b77c7697 100755 (executable)
--- a/todo
+++ b/todo
@@ -38,7 +38,7 @@ function todo_find {
 function todo_list {
   local status="$1"
 
-  # Taskwarrior
+  # User's Taskwarrior
   if which task &> /dev/null; then
     echo "taskwarrior:"
     echo ""
@@ -46,12 +46,15 @@ function todo_list {
     echo ""
   fi
 
-  # Timewarrior
+  # User's Timewarrior
   if which timew &> /dev/null; then
     timew | grep -v "^There is no active time tracking."
     echo ""
   fi
 
+  # Timewarrior data from projects
+  SILENT=true tasks +$status list
+
   todo_find | while read todo; do
     if [ "$todo" != "$NAME" ]; then
       if [ ! -z "$status" ] && ! grep -q "\($status\)" $todo; then