time-monitoring 0.0.1
Time monitoring with shell commands,
Requires Python: >=3.6

# Time monitoring

The `time-monitoring` package provides useful tools to monitor your time.
It can be used to improve productivity, or to generate invoice.

## Installation
**Requirements**:
The package is based on python and shell.  

We provide an installation through the `pipy` package repository, hence you can use pip to download it.
```
$ pip install time-monitoring
```
If you are working with `conda` environments, make sure that your pip command is linked to conda by typing `$ which pip` and making sure that the output displays conda installation path.

Once you have intall the package, you should initialize buffer files with the following command
```
$ setup_time_report
```
Buffers files are kept in the folder `time-monitoring` of your home directory.
This is specified by the `BUFFER_PATH` variable in the file `src/time_monitor/config.py`.
If you want to modify this location, you should download the code source, modify those variables and build the package (*e.g.* by running `$ python setup.py install`).

There is few variables that are fixed for you, that you might want to change if you were to use this package to it full potential.
In particular, there is macros defines in the file `sys.prefix / latex / invoice / constants.tex` where `sys.prefix` is the prefix of your python installation that can be check in `python` by importing the `sys` module and printing the value of `sys.prefix`.

#### Future

## Shell commands
This package provides the following shell executables.

#### Basic commands
- The `begin` command
```
$ begin <activity> -m --message "<optional message>"
```
This command indicates that you have begun a new activity specified by `<activity>`, *e.g.* `<activity>=work`.
You may add a message such as `"fixing issue 31"`.  
If you use this command while another activity was already declared, it will assume you just stop the precedent activity.

- The `message` command
```
$ message "<message>" "<first optional message>" [...] "<final optional message>"
```
This command allows you to add a message without modifying the activity you are currently pursuing.
For example, if you have already declare being in your spare time and decide to read the press and would like to monitor this, you can add the message `"reading the press"`.

- The `stop` command
```
$ stop
```
When you stop an activity and do not begin a new one, run this command.

- The `report` command
```
$ report
```
This command saves all activities recorded since last report in order to generate a new report.
This is useful to generate statistics or invoices.  
Reports are numbered according the the format `<YYYY><MM><NB>` where `<YYYY>` and `<MM>` denominates the current year and month and `<NB>` is counting the number of reports generated so far in the month.  
Past activity reports are kept in a `data` folder specified by the variable `DATA_PATH` of the `time_monitoring/config.py` file.

#### Advanced commands
- The `activity` command
```
$ activity
```
This command opens the buffer file that records your current activity.
It is useful to check make sure you have declared it correctly and eventually correct it.

- The `stats` command
```
$ stats -r --report <report number>
```
This command sums up current period activities, or the activities saved in the report `<report number>`.

- The `invoice` command
```
$ invoice -a --activity <activity> -r --report <report number> -p --price <hourly rate> -c --change <change rate> -i --invoice <invoice number>
```
This command is useful to generate invoices. 
You can bill at a given `<hourly rate>` price for a given `<activity>` regarding houred reported in the report `<report number>`.
The generated pdf file will be located in the `latex` folder of this code source.