work_tock 0.1.8

A Program to track your hours across various projects
Documentation
Work Tock
==========

A command line work tracking program.

See Documentation for basic file format

otherwise the --help command should be useful enough.

## please not a significant change in usage has been applied to the cli. See change log entry 0.1.8 to handle setting out and in times.


Basic Usage
----------

You can use this program to clockin

    work_tock -i <JobName>

clockout

    work_tock -o


The program works with a single text file, and will only read, and append to it, so all data in that file will otherwise remain untouched.

use "-f" to select the file or set it in "$HOME/.config/work\_tock/init.toml"

```toml
[config]
    file="{HOME}/<path>/<to>/<file>"
```

"{HOME}" is the env var $HOME, Any other env var can be used or not.

A standard file looks like this :

```
23/01/2019
    Carwashing,12:30-13:50
    15:00,#Carwashing is implied by previous Job
    Programming,16:00,#Clockout for Carwash is implied by new Job
    Eating,17:00
  -18:00,#Clockout

24/01/2019
    _breakfast,#Tags can be added with underscore
    15:00,#Eating is implied as it was the last job
    __,#clears all current tags.
  -16:00
```

* Commas and newlines begin a new item
* Whitespace is ignored next to either side or a break (",","\n")
* Jobs are Letters only
* Clockins are "hh:mm"
* Clockouts are  "-hh:mm"
* Tags begin with an "\_" and can be cleared with "\_\_"
* Dates are dd/mm/yyyy, but if you set year=2019, dates can be dd/mm after that.

Every Clockin will use the most recent Job,Date, and Tags for the clocking, 

So given the example file ```work_tock``` will produce:

```
{"Carwashing": 02:20, "Eating": 02:00, "Programming": 01:00}

Total Time = 05:20
```

Printing and Filters
------------------

Using "-p" Will print all entries, but if you want to be morse spcific you can apply a filter and -p will print only entries that pass that filter.

> NOTE: -t for today used to be -d which is now used to specify a date to work on

To get more relevent data you can use filters such as "-t" :Today, or "--day 3/1/2019", or by job 

eg: ```work_tock -p --job Carwashing``` will return

```
23/01/2019
  Carwashing: 12:30-13:50 = 01:20   => 01:20
  Carwashing: 15:00-16:00 = 01:00   => 02:20

{"Carwashing": 02:20}

Total Time = 02:20
```

For more information use ```work_tock --help```





changes:
=========

v 0.1.8
---------

* --outat no longer exists instead use -o -a <timeout>
* --in now use -a (at time) and -d (on date) to set date and time instead of comma separated parsing.

to help with issues arising from forgetting to clockout yesterday, -y can be used to treat the current day as yesterday, eg: yesterday I clocked in at 12:00 and forgot to clockout at 17:00

    work_tock -oy -a 17:00 

means

    work_tock out yesterday at 17:00



v 0.1.7
--------

Bug fix -- Now handles empty files properly (Oops)

now takes -q option for clockin to previous Job

v 0.1.6
---------

Added error handling for loggin in and out on different days.

switched order of logging in and printed statements to include the current logout on the printed statements.


v 0.1.5
-----------

Documented use of toml instead of lazyf

v 0.1.4
--------
Separated library from application

v 0.1.3
-------
Trying to get repository and docs showing on Cargo

v 0.1.2
--------
Added Docs to readme


v 0.1.1
--------

Added basic usage documentation