# Taskwarrior

Taskwarrior est un logiciel open-source en ligne de commande permettant de gérer ses tâches. Il publié sous licence MIT et est multiplateforme.
Il permet de créer, modifier, supprimer des tâches ; de leur assigner un ou plusieurs projets, priorités et tags et de les visionner à travers divers rapports.

## Utilisation

Les commandes permettant l'utilisation de Taskwarrior suivent la syntaxe générique suivante :

### Gestion des tâches

Les commandes add, modify et done permettent respectivement d'ajouter, de modifier et de marquer comme faite une tâche.
Chaque tâche a une description qu'il est obligatoire de préciser dès l'ajout, ainsi que de multiples attributs (tels qu'un projet, une priorité, des tags, une date d'échéance, une dépendance...). Des valeurs peuvent être assignées à tout ou partie des attributs et ses valeurs peuvent être modifiée à tout moment.
Certains de ces attributs ont toutefois quelques spécificités. La priorité d'une tâche ne peut être fixée qu'à l'une des trois valeurs suivantes : H pour high (élevée), M pour medium (moyenne) ou L pour low (basse). La date d'échéance doit être fixée selon certaines règles, bien que de nombreuses manières différentes permettent de la définir, entre autres :
* l'équivalent anglais de n'importe quel jour de la semaine : e. g. friday indique vendredi prochain
* des abréviations anglaises pour désigner le début (start) ou la fin (end) de la semaine (week), du mois (month), de l'année (year). e. g. som désigne le début du mois (start of month) ; eoy désigne la fin de l'année (end of year). Attention cependant, la semaine désigne la semaine de travail (qui commence le lundi et finit le vendredi). Il suffit toutefois d'utiliser eocw pour désigner la semaine du calendrier (calendar week) qui commence le dimanche ou le lundi et se termine le samedi ou le dimanche. Ainsi eow désigne la fin de la semaine de travail (vendredi) et eocw, la fin de la semaine du calendrier.
* une date sous la forme MM/JJ/AAAA ou sous la forme déterminée par la norme ISO 8601.

#### Exemple

On crée d'abord plusieurs tâches en spécifiant une description et, parfois, un ou plusieurs attributs. Ici, la tâche 3 a une priorité basse, dépend des tâches 1 et 2 et a un tag « unTag ».
Une fois les tâches créées, on peut les modifier en spécifiant un filtre qui détermine quelle(s) tâche(s) est (sont) à modifier. Un filtre peut être l'ID d'une tâche (e. g. 1 désignera la tâche 1 : 'Une tâche...'), une énumération d'ID (e. g. 1,3 désignera les tâches 1, 'Une tâche...', et 3, 'Une troisième tâche'), une plage d'ID, comme ici, où 1-3 signifie les tâches 1 et 2 et 3 (équivalent à 1,2,3; mais est très utile si l'on désigne une plage importante : e. g. 9-34). Un filtre peut aussi être un attribut quelconque : e. g. priority:H filtrera uniquement les tâches avec une priorité élevée. On peut aussi combiner les filtres avec les opérateurs logiques and, or et xor.
En l'absence de filtre, comme lors de la seconde modification, l'action affecte toutes les tâches. Ici toutes les tâches font maintenant partie du projet DécouverteDeTaskwarrior et ont pour échéance la fin de la semaine du calendrier.
On termine en marquant la tâche 1 comme faite.

### Rapports sur les tâches

Parmi les rapports prédéfinis, on notera :
* list (liste toutes les tâches avec quelques informations complémentaires à chaque tâche comme son projet, sa priorité et son échéance),
* long (comme list mais avec plus de détails comme les dépendances, les tags),
* next (liste les tâches les plus urgentes, déterminées par le logiciel en calculant l'« urgence » d'une tâche à l'aide de sa priorité, de son échéance...),
* summary (liste tous les projets et indique pour chacun le nombre de tâches restant à effectuer ainsi que l'avancement du projet qui correspond au pourcentage de tâches du projet réalisées).
task <nom-du-rapport> permet de visualiser un rapport. Par exemple, task list permet de visualiser le rapport list. Il est toutefois possible de visualiser un rapport en utilisant un filtre, par exemple task priority:H list.
En plus de la vingtaine de rapports prédéfinis, il est aussi possible de définir ses propres rapports en éditant le fichier de configuration .taskrc.

#### Exemple

En continuant l'exemple de la partie précédente, voici ce que peuvent donner les quelques rapports précédemment cités :
Les quatre rapports cités listent tous uniquement les tâches non terminées, ainsi « Une tâche... » n'est pas listé. De plus, les ID affichés ici ne sont pas constants et peuvent changer lorsqu'une tâche est marquée comme faite. Un identifiant désignant une tâche de manière unique existe cependant sous le nom d'UUID et a une valeur en hexadécimal.
Dans le rapport summary, une barre de progression (en réalité plus esthétique que celle de l'exemple) permet d'apprécier l'avancement de chaque projet.
Ici, les tâches sont classées par « urgence », paramètre calculé entre autres à partir de la priorité et de l'échéance.
Note : En réalité, la commande task seule affiche le rapport next et est donc équivalente à task next .