Skip to main content
Help us improve Python packaging – donate today!

Time tracker for Command Line

Project Description

PyPI version Build Status

Letsdo, the CLI time tracker

Letsdo helps you to be more productive and focused, tracking the time you spend on various tasks:

$ letsdo letsdo-readme
  Starting task 'letsdo-readme'

You can pass whatever string to Letsdo in order to describe your task

$ letsdo best readme in the istory of github
  Starting task 'best readme in the istory of github'

and change its description if you like

$ letsdo --change best readme in the history of github
  Renaming task 'best readme in the istory of github' to 'best readme in the History of github'

but if you just made a little typo, might be better to use –replace and –with flags:

$ letsdo --replace github --with GitHub

$ letsdo –change best readme in the history of github Renaming task ‘best readme in the History of github’ to ‘best readme in the History of GitHub’

When a task is running, executing Letsdo will prompt the time spent on it

$ letsdo
  Working on 'best readme in the History of GitHub' for 0:01:32

Once the task is completed, just ‘stop’ it:

$ letsdo --stop
  Stopped task 'best readme in the History of GitHub' after 0:01:45

Let’s say you do not want to stop, but just move to another task, use –to flag

$ letsdo previous task
  Starting task 'previous task'
$ letsdo --to  new task
  Stopped task 'previous task' after 0:00:08
  Starting task 'new task'

Now stop, and see some reports

$ letsdo --stop
  Stopped task 'new task' after 0:00:25

Total time for each task (tasks with the same name are considered as one)

$ letsdo --report
  [0] 2016-11-14| 0:00:00 - letsdo-readme
  [1] 2016-11-14| 0:01:00 - best readme in the History of GitHub
  [2] 2016-11-14| 0:01:00 - previous task
  [3] 2016-11-14| 0:00:00 - new task

See all the tasks’ start and stop time, day by day (time is in 24h format)

$ letsdo --report --full
===================================
2016-11-14| Total time: 0:02:00
-----------------------------------
2016-11-14| 0:00:00 (16:03 -> 16:03) - letsdo-readme
2016-11-14| 0:01:00 (16:04 -> 16:05) - best readme in the History of GitHub
2016-11-14| 0:01:00 (16:06 -> 16:07) - previous task
2016-11-14| 0:00:00 (16:07 -> 16:07) - new task

See total time per task and per day

$ letsdo --report --daily
===================================
2016-11-14| Total time: 0:02:00
-----------------------------------
2016-11-14| 0:00:00 - letsdo-readme
2016-11-14| 0:01:00 - best readme in the History of GitHub
2016-11-14| 0:01:00 - previous task
2016-11-14| 0:00:00 - new task

Now, back working again on a previous task, too bad the name is too long to type it! No problem, just use –keep flag to keep working on the last task

$ letsdo --keep
  Starting task 'new task'

But, I do not want to work on the last! Then use the –id flag (the task index is the one reported with –report flag)

$ letsdo --stop
  Stopped task 'new task' after 0:00:50
$ letsdo --keep --id 1
  Starting task 'best readme in the History of GitHub'

Clearly, all the flags support the short version (-k for –keep, -i for –id, etc.)

The Report comes from a plain text file under /.letsdo-data

The comes from Letsdo configuration file, stored in your $HOME directory:

$ cat ~/.letsdo
letsdopath: ~/Dropbox/

Having a configuration file is not necessary, if not present, Letsdo will use the $HOME folder to store its data. However, setting a datapath is useful in order to share the tasks with multiple systems (on Dropbox for example)

Finally, Letsdo does not really need a task name to start, so you can start tracking your work and choose a name for it later.

$ letsdo
No running task. Let's create a new unnamed one (y/N)?:

or with the –force flag

$ letsdo --force
  Starting task 'unkown'

and if you’ve forgotten to start/stop a task at the right moment, just use the –time flag followed by the HOUR:MINUTE string of the correct moment.

@Contexts, +tags and autocompletion

One can specify the task with @contexts (only one per tasks) and +tags (no limits) and Letsdo bash completion is smart enough to autocomplete also @contexts and @tags. Use –autocomplete flag for more information

Release history Release notifications

This version
History Node

0.3.4

History Node

0.3.3

History Node

0.3.2

History Node

0.3.1

History Node

0.3.0

History Node

0.2.2

History Node

0.1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
letsdo-0.3.4.tar.gz (7.1 kB) Copy SHA256 hash SHA256 Source None Nov 24, 2016

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page