cmdtaskmanager
is a simple task manager.
curl -s https://raw.githubusercontent.com/obaranovskyi/cmdtaskmanager/main/install.sh | bash /dev/stdin
On top of the hierarchy stands the project, where you can include tasks.
Note: Tasks also might exist without a project, in case you want them to be for the general purpose.
To create a project, run the following command:
add-project 'Homework' -d 'Under this project, I do my homework.' -fd '2025-01-01'
-d
, or --description
- stands for the description
-fd
, or --finish-date
- stands for the finish date
Let's add one more:
add-project 'My Real Company' -d 'Here I keep the tasks related to my future company.'
This time we won't specify the finish date as there is no reason to do that in the current case.
Now we have projects, let's display them, with the following command:
display-project-list
In case you want to receive information only about some specific project run this command:
display-project 1
1
is the project id, that might be found in the first column of the general project table.
To remove the project run:
remove-project 2
Let's update the project info:
update-project 2 -n 'My New Real Company' -d 'Here I keep the tasks related to my current company.'
Note: You need to pass only the properties which you want to update.
That is probably the most important part.
To create a task without a project just run the following command:
add-task 'Go to the store'
To create a task under the project:
add-task 'Clean up the room' -pi 1 -d 'No rush with this'
Now we have tasks, let's display them:
display-task-list
In case you want to display some specific task, run the following command:
display-task 2
2
is the task id, that might be found in the first column of the general task table.
To show only project related tasks, run the following command:
display-task-list -pi 1
To show only tag related tasks, run:
display-task-list -tns 'important'
Note It's possible to search by multiple tag ids or names.
To search by title, run:
display-task-list -t 'make a'
To search by description, run:
display-task-list -d 'no'
Important It is possible to combine multiple search criteria.
display-status-list
update-project 1 -si 2
1
is the project id
2
is the status id
It's possible to update the project using the status name:
update-project 1 -sn 'In Progress'
Now we can see the status was changed.
It's possible to change task status in a similar manner as was changed status for the project.
update-task 1 -si 2
This command will update the task status to 'In Progress'.
But a more appropriate way of changing the task status is to use the changing status-specific commands.
Here is the task status changing commands:
Set task status to 'Not Started':
reset-task 1
Set task status to 'In Progress':
start-task 1
Set task status to 'Completed':
complete-task 1
Set task status to 'Postponed':
postpone-task 1
Set task status to 'Removed':
remove-task 1
It's possible to add a comment to task:
add-comment 1 "It's better not to postpone this."
add-comment 1 "At least, I think so."
1
is a task id
We can display comments in the table:
display-comment-list 1
1
is a task id
or we can display task details and see comments there:
to remove the comment, run:
remove-comment 2
To add a tag run:
add-tag 'important' -d 'Something that has to be done quickly.'
add-tag 'test'
To display all available tags:
display-tag-list
Adding tags to task
task-update 1 -tis 1 2
To check whether you've added the tags to the task, display task details:
display-task 1
Note It's possible to add tags using names instead of ids.
update-task 1 -tns 'important' 'test'
There is an even more straightforward way to add tags to tasks. When you're adding a new task, you can add tags. If the tag doesn't exist, it'll be automatically added:
add-task 'Make a coffee' -d 'But the last one for today.' -tns 'not important' 'later'
If you run display-tag-list
, you'll see them on the list:
if you run display-task-list
, you'll see a new task with the tags you've provided:
To remove tags from task, run this command:
update-task 1 -tns ''
To remove tag from the system:
remove-tag 2
Note: If some tasks used a tag, you would be notified to update the task first due to dependency.
- We use
rich
to show everything nicely in the terminal. - We use
sqlalchemy
to store the data in the database. - We use
pytz
to work with the dates.
This project is licensed under the terms of the MIT license.