git.fiddlerwoaroof.com
name mode size
precompiled 040000
sample-inputs 040000
.gitignore 100644 0 kb
README.md 100644 5 kb
build.sh 100755 0 kb
freshbooks.lisp 100644 8 kb
generic-equals.lisp 100644 0 kb
list-query.lisp 100644 2 kb
macros.lisp 100644 2 kb
main-classes.lisp 100644 4 kb
mvc.lisp 100644 4 kb
package-grapher.lisp 100644 1 kb
package.lisp 100644 2 kb
parser-classes.lisp 100644 6 kb
parser.lisp 100644 8 kb
tempores-client.lisp 100644 10 kb
tempores.asd 100644 1 kb
tempores.lisp 100644 6 kb
test-parser.lisp 100644 11 kb
README.md
A little utility to manage a simple time-sheet file. The file-format is this: ``` -- Someday YYYY-MM-DD start@HH:MM[:SS][(+|-)NN(mins|hrs)][,HH:MM[:SS][(+|-)NN(mins|hrs)]] Client Name: This is a memo. ``` The parser currently has some rudimentary error handling: it detects invalid indentation (i.e. the lines of a record do not begin with either a single tab or three spaces) and it detects invalid times. Additionally, if run in interactive mode `-i`, when it discovers invalid input, it will prompt for a replacement and attempt to correct the error. Also, with `-W`, it should be able to recover from whitespace errors on its own. ## Install: Just do this: ``` CC=`which gcc` \ sbcl --no-userinit \ --load ~/quicklisp/setup.lisp \ --eval '(push (truename ".") asdf:*central-registry*)' \ --eval '(ql:quickload :timesheet)' \ --load timesheet-client.lisp \ --eval '(timesheet.cli::make-executable)' ``` ## Todo: - Expand error handling - Add alternative export formats - Add querying capabilities - Support some notion of sub-tasks ## Examples: ``` Usage: timesheet [-sWircvh] [OPTIONS] TIMESHEETS ... A program for managing logs of hours worked Display options -s, --status Print a short summary of work status -W, --ignore-whitespace Ignore whitespace errors in input -i, --interactive Run interactively Sort options -r, --reverse Reverse the sort direction -c, --client Sort records by client Freshbooks --post-hours Post hours to freshbooks (requires manual setup of Freshbooks keys) Self-test options --run-tests Run the tests --output-style=TYPE The kind of output to produce Default: normal Generic options -v, --version Show the program version -h, --help Show this help ``` By default, it orders the log by dates. With the `-r` option, it displays the dates in descending order: ``` % ./timesheet -r sample-inputs/test.ts Thu, 2016/01/04 Client #2 5.00 hrs Implement prototype and write presentation Thu, 2016/01/04 Client #1 9.00 hrs Implement Facebook Connector Wed, 2016/01/03 Client #2 2.50 hrs Discussed user requirements and produce specification. Wed, 2016/01/03 Client #1 6.00 hrs Delivered prototype, reviewed prototype feedback. Tue, 2016/01/02 Client #1 8.00 hrs Prototype for testing user experience. Mon, 2016/01/01 Client #1 8.00 hrs Mockup of site layout ``` With `-c` it sorts by clients and then does a stable-sort by date: ``` % ./timesheet -sc sample-inputs/test.ts Mon, 2016/01/01 Client #1 8.00 hrs Mockup of site layout Tue, 2016/01/02 Client #1 8.00 hrs Prototype for testing user experience. Wed, 2016/01/03 Client #1 6.00 hrs Delivered prototype, reviewed prototype feedback. Thu, 2016/01/04 Client #1 9.00 hrs Implement Facebook Connector Wed, 2016/01/03 Client #2 2.50 hrs Discussed user requirements and produce specification. Thu, 2016/01/04 Client #2 5.00 hrs Implement prototype and write presentation ------------------------------------------------------------------------------------------------------------------------ Client #1: 31.00 hours @ XX.00 $/hr = $XXXX.00 Client #2: 7.50 hours @ XX.00 $/hr = $ XXX.00 Total: 38.50 hours @ XX.00 $/hr = $XXXX.00 ``` ``` % ./timesheet -sr sample-inputs/test.ts Thu, 2016/01/04 Client #2 5.00 hrs Implement prototype and write presentation Thu, 2016/01/04 Client #1 9.00 hrs Implement Facebook Connector Wed, 2016/01/03 Client #2 2.50 hrs Discussed user requirements and produce specification. Wed, 2016/01/03 Client #1 6.00 hrs Delivered prototype, reviewed prototype feedback. Tue, 2016/01/02 Client #1 8.00 hrs Prototype for testing user experience. Mon, 2016/01/01 Client #1 8.00 hrs Mockup of site layout ------------------------------------------------------------------------------------------------------------------------ Client #1: 31.00 hours @ XX.00 $/hr = $XXXX.00 Client #2: 7.50 hours @ XX.00 $/hr = $ XXX.00 Total: 38.50 hours @ XX.00 $/hr = $XXXX.00 ``` `-c` and `-r` combine: ``` % ./timesheet -scr sample-inputs/test.ts Thu, 2016/01/04 Client #2 5.00 hrs Implement prototype and write presentation Wed, 2016/01/03 Client #2 2.50 hrs Discussed user requirements and produce specification. Thu, 2016/01/04 Client #1 9.00 hrs Implement Facebook Connector Wed, 2016/01/03 Client #1 6.00 hrs Delivered prototype, reviewed prototype feedback. Tue, 2016/01/02 Client #1 8.00 hrs Prototype for testing user experience. Mon, 2016/01/01 Client #1 8.00 hrs Mockup of site layout ------------------------------------------------------------------------------------------------------------------------ Client #1: 31.00 hours @ XX.00 $/hr = $XXXX.00 Client #2: 7.50 hours @ XX.00 $/hr = $ XXX.00 Total: 38.50 hours @ XX.00 $/hr = $XXXX.00 ```