Kjell-Magne Øierud

Software developer

Achoo — The Achievo CLI 18 Feb 2010

To ease the pain of hourregistration, I have created a command line shell for Achievo, the hour registration system we use at Redpill Linpro. The code is hosted on Github, and you can find the code together with install instructions here.

To illustrate it’s capabilities, I’ll walk you through an example session.

Register hours

$ rlwrap achoo         # rlwrap adds some line editing goodness, but you can start it with just 'achoo' as well
Welcome to Achoo!
 1. Register hours
 2. Show flexitime balance
 3. Day hour report
 4. Week hour report
 5. Holiday balance
 6. Lock month
 0. Exit
[1]> <enter>
Date ([today] | ?)> ?
Accepted formats:
         today | (+|-)n | [[[YY]YY]-[M]M]-[D]D

    January 2010         February 2010           March 2010
Mo Tu We Th Fr Sa Su  Mo Tu We Th Fr Sa Su  Mo Tu We Th Fr Sa Su
             1  2  3   1  2  3  4  5  6  7   1  2  3  4  5  6  7
 4  5  6  7  8  9 10   8  9 10 11 12 13 14   8  9 10 11 12 13 14
11 12 13 14 15 16 17  15 16 17 18 19 20 21  15 16 17 18 19 20 21
18 19 20 21 22 23 24  22 23 24 25 26 27 28  22 23 24 25 26 27 28
25 26 27 28 29 30 31                        29 30 31

Date ([today] | ?)> <enter>
Recently used projects
 1. p1: NiceCustomer - Consulting
 2. p2: AnnoyingCustomer - Consulting
 3. abs: Absence
 4. var: Various
 0. Other
Project [1]> 2

If the project you are looking for is not in the list with recently used projects, select 0 to get the complete list of your projects.

When there is only one phase assosiated with the selected project, achoo will automatically select it and move on. For projects with more than one phase, you get a menu:

Phases
 1. Cool phase
 2. Boring phase
Phase ID> 2
VCS logs for 2010-02-18:
--------------------------------<( PROJECT_1 )>--------------------------------
Added breathtaking feature X
Refactored Y
--------------------------------<( PROJECT_2 )>--------------------------------
Made some tests pass
Remark> Fixed a lot of awesome stuff
Last log:
Powered on: (0+09:44) Today 06:01 - 15:45
  Awake: (0+00:09) Today 06:01 - 06:10
  Awake: (0+07:44) Today 08:01 - 15:45

Hours [7:30]> <enter>
Do you want to change the defaults for worktime period and/or billing percentage? [N/y]>  <enter>
      date: "2010-02-18"
   project: "p2: AnnoyingCustomer - Consulting"
     phase: "Boring phase"
    remark: "Fixed a lot of awesome stuff"
     hours: "7.5"
  worktime: "Normal"
   billing: "Normal (100%)"
Submit? [Y/n]> y

Notice that to you get some extra help with registering remark and hours. Achoo fetches the log for your commits for the given day and shows you when your laptop has been awake (not suspended).

Flexi time balance

 :  ...
 2. Show flexitime balance
 :  ...
[1]> 2
Date ([today] | ?)> <enter>
Fetching dayview ...
Flexi time balance: 2:30

Day hour report

 :  ...
 3. Day hour report
 :  ...
[1]> 3
Date ([today] | ?)> <enter>
+-------------------------------+------------+--------+-------+--------------+----------+--------------------+
| Project                       | Phase      | Remark | Time  | Billing rate | Currency | Billing percentage |
+-------------------------------+------------+--------+-------+--------------+----------+--------------------+
| p1: NiceCustomer - Consulting | Cool phase | Foo    | 07:30 | 1000.00      | NOK      | Normal (100%)      |
+-------------------------------+------------+--------+-------+--------------+----------+--------------------+

Week hour report

 :  ...
 4. Week hour report
 :  ...
[1]> 4
Date ([today] | ?)> <enter>
Fetching weekview ...
+--------------------------------------------+-------------+-------------+-------------+-------------+------------+------------+------------+-------+
| Project - Phase                            | Mon (02-15) | Tue (02-16) | Wed (02-17) | Thu (02-18) | Fri(02-19) | Sat(02-20) | Sun(02-21) | Total |
+--------------------------------------------+-------------+-------------+-------------+-------------+------------+------------+------------+-------+
| p1: NiceCustomer - Consulting - Nice phase | 7:30        | 2:00        |             |             |            |            |            | 9:30  |
| abs: Absence - Holiday                     |             | 5:30        | 7:30        | 7:30        |            |            |            | 20:30 |
+--------------------------------------------+-------------+-------------+-------------+-------------+------------+------------+------------+-------+
| Total                                      | 7:30        | 7:30        | 7:30        | 7:30        |            |            |            | 29:30 |
+--------------------------------------------+-------------+-------------+-------------+-------------+------------+------------+------------+-------+

Holiday balance

 :  ...
 5. Holiday balance
 :  ...
[1]> 5
Balance: 26,00

Lock month

Achoo selects the previous month as the default

 :  ...
 6. Lock month
 :  ...
[1]> 6
Period ([201001] | YYYYMM)> <enter>
period: 201001
Submit? [Y/n]> n
Cancelled

Copyright © 2008–2017 Kjell-Magne Øierud.