3 releases (breaking)

Uses old Rust 2015

0.3.0 Aug 30, 2016
0.2.0 Aug 30, 2016
0.1.0 Aug 26, 2016

#555 in Date and time

BSD-3-Clause

44KB
825 lines

Timmy

Timmy is a time tracker. At the moment it is not particularly stable or even well written! Things like parsing dates in english (eg. "yesterday 12:00") may be buggy. If you do want to install it run:

matt@box:~/$ cargo install timmy

and make sure ~/.cargo/bin or equivalent is in your PATH.

Example usage

Creating a new project can be done with the new command. Tags are comma separated.

matt@box:~/$ # Creating a new project called timmy with the customer 'me' and tags 'rust,cli'
matt@box:~/$ timmy new timmy -c me -t rust,cli

You can get a list of projects like so:

matt@box:~/$ timmy projects
┌───────┬──────────┬──────────┐
│ Name  │ Customer │ Tags     │
├───────┼──────────┼──────────┤
│ timmy │ me       │ cli,rust │
└───────┴──────────┴──────────┘

You can start tracking using timmy track. You can optionally add a start point or a start and end point to add some time that you forgot to track.

matt@box:~/$ timmy track <project>
matt@box:~/$ # Starting time 
matt@box:~/$ timmy track <project> -s "12:00" 
matt@box:~/$ # Starting time and end
matt@box:~/$ timmy track <project> -s "12:00" -e "13:00"

Timmy will monitor what programs you are using, this can be disabled by passing -n. At the end of a session timmy will automatically look for any git commits in the repo in the current directory. If you edit history (eg. reverting a commit) you can run:

matt@box:~/$ timmy git <project>

and it will repopulate the commits for the project.

To get all information on a particular project use the project command:

matt@box:~/$ timmy project timmy
timmy
Tags: rust,cli
Total time spent: 14hrs 31mins

Program usage
98.97% emacs
 1.03% gnome-terminal-

Activity
Thu 25 August 2016 17:55-18:02 6mins
    * Print what commits have been found
    * Add total time to activity printout
Thu 25 August 2016 17:44-17:54 9mins
    * Add week flag to show activity in last week
Thu 25 August 2016 17:18-17:27 9mins
    * Add support for dates like 20/08 to chronny
    * Fix 20/08 date not being parsed
Thu 25 August 2016 16:32-17:15 42mins
    * Add filtering activity by dates
    * Add absolute dates to chronny
    * Remove id from projects table
Wed 24 August 2016 14:09-14:30 21mins
    * Add start and end options to track
    * Add kitchen sink test for chronny
Tue 23 August 2016 20:35-21:24 48mins
    * Add relative times
Tue 23 August 2016 15:47-17:12 1hrs 25mins
    * Start writing a human datetime parsing lib
    * Use i64 for row ids
    * Automatically look for commits at the end of track
Tue 23 August 2016 15:28-15:46 18mins
Mon 22 August 2016 21:18-21:27 8mins: Example usage
    * Extend readme with example usage
Mon 22 August 2016 20:30-21:04 34mins
    * Add short weeks view
    * Use debug! instead of error!
    * Rename week command to weeks
    * Stop projects panicing when project is not found
Mon 22 August 2016 15:38-17:47 2hrs 9mins
    * Add total separator to week view
    * Use tables lib in timmy
    * Remove double bordering from tables
    * First attempt at a tables lib
Mon 22 August 2016 14:50-15:33 42mins
    * Add total to weeks view
    * Move formatting a time difference into a function
    * First version of weeks view
Mon 22 August 2016 14:20-14:41 20mins
Sun 21 August 2016 18:22-18:25 2mins: bugfixing
    * Make total time display correct
Sun 21 August 2016 17:04-18:20 1hrs 15mins: Upload to github
    * Add readme
    * Make project view work with no timeperiods or tags
Sun 21 August 2016 15:49-16:03 13mins
    * Remove abc
    * Refactor project view
    * Fix clippy warnings
    * Rename SqliteError to Sqlite
Sun 21 August 2016 15:23-15:48 24mins: Clean up
Sun 21 August 2016 14:50-15:03 12mins: Total time on project vew
    * Add total time to project view
Sun 21 August 2016 14:35-14:46 11mins: Fix projects list
    * Fix projects view
Sun 21 August 2016 13:48-14:24 35mins: Project view
    * Add tags to project view
    * Move getting tags into query
    * Add project view
Sat 20 August 2016 21:28-21:42 13mins: Project view
Sat 20 August 2016 20:06-20:47 41mins: Views
    * Refactor printing a row into a function
    * Implement projects list
Sat 20 August 2016 18:39-19:21 42mins: Views
Sat 20 August 2016 14:50-14:57 6mins: Test sqlites support for times
Sat 20 August 2016 13:45-13:59 13mins
    * Use question mark instead of try!
    * Add description to timeperiods
    * Rename timeperiod to timeperiods for consistency
Sat 20 August 2016 13:40-13:41 0mins
Sat 20 August 2016 12:56-13:38 41mins
Fri 19 August 2016 19:18-19:58 39mins
Fri 19 August 2016 18:08-18:23 15mins
    * Use own error type
Total: 14hrs 31mins

This is quite long so you can get the activity between certain times or dates like so:

matt@box:~/$ timmy project timmy -s 22/08/16 -u 24/08/16
timmy
Tags: rust,cli
Total time spent: 14hrs 31mins

Program usage
98.97% emacs
 1.03% gnome-terminal-

Activity
Wed 24 August 2016 14:09-14:30 21mins
    * Add start and end options to track
    * Add kitchen sink test for chronny
Tue 23 August 2016 20:35-21:24 48mins
    * Add relative times
Tue 23 August 2016 15:47-17:12 1hrs 25mins
    * Start writing a human datetime parsing lib
    * Use i64 for row ids
    * Automatically look for commits at the end of track
Tue 23 August 2016 15:28-15:46 18mins
Mon 22 August 2016 21:18-21:27 8mins: Example usage
    * Extend readme with example usage
Mon 22 August 2016 20:30-21:04 34mins
    * Add short weeks view
    * Use debug! instead of error!
    * Rename week command to weeks
    * Stop projects panicing when project is not found
Total: 3hrs 37mins

You can even use English date descriptions like so:

matt@box:~/$ timmy project timmy -s "yesterday 12:00"
timmy 
Tags: rust,cli
Total time spent: 14hrs 31mins

Program usage
98.97% emacs
 1.03% gnome-terminal-

Activity
Thu 25 August 2016 17:55-18:02 6mins
    * Print what commits have been found
    * Add total time to activity printout
Thu 25 August 2016 17:44-17:54 9mins
    * Add week flag to show activity in last week
Thu 25 August 2016 17:18-17:27 9mins
    * Add support for dates like 20/08 to chronny
    * Fix 20/08 date not being parsed
Thu 25 August 2016 16:32-17:15 42mins
    * Add filtering activity by dates
    * Add absolute dates to chronny
    * Remove id from projects table
Total: 1hrs 8mins

You can get a week by week view of a project as well:

matt@box:~/$ timmy weeks timmy
┌──────────┬───────┬─────────────┐
│ Week     │ Day   │ Time        │
├──────────┼───────┼─────────────┤
│ 22/08/16 │ Mon   │ 3hrs 56mins │
│          │ Tue   │ 2hrs 32mins │
│          │ Wed   │ 21mins      │
│          │ Thu   │ 1hrs 8mins  │
│          ├───────┼─────────────┤
│          │ Total │ 7hrs 58mins │
├──────────┼───────┼─────────────┤
│ 15/08/16 │ Fri   │ 55mins      │
│          │ Sat   │ 2hrs 40mins │
│          │ Sun   │ 2hrs 57mins │
│          ├───────┼─────────────┤
│          │ Total │ 6hrs 33mins │
└──────────┴───────┴─────────────┘

Dependencies

~27MB
~512K SLoC