gabor-boros/minutes

View on GitHub
www/docs/getting-started.md

Summary

Maintainability
Test Coverage
Minutes is a CLI tool, primarily made for entrepreneurs and finance people, to help their daily work by synchronizing worklogs from a `source` to a `target` software. The `source` can be your own time tracking tool you use, while the `target` is a bookkeeping software.

This guide show you the basics `minutes`, walks through the available flags, and gives some examples for basic configuration. For the full list of available configuration options, visit the related [documentation](https://gabor-boros.github.io/minutes/configuration).

## Installation

### Using `brew`

``` shell
$ brew tap gabor-boros/brew
$ brew install minutes
```

### Manual install

To install `minutes`, use one of the [release artifacts](https://github.com/gabor-boros/minutes/releases). If you have `go` installed, you can build from source as well

### Configuration

`minutes` has numerous flags and there will be more when other sources or targets are added. Therefore, `minutes` comes with a config file, that can be placed to the user's home directory or the config directory.

## Usage

```plaintext
Usage:
  minutes [flags]

Flags:
      --clockify-api-key string      set the API key
      --clockify-url string          set the base URL
      --clockify-workspace string    set the workspace ID
      --config string                config file (default is $HOME/.minutes.yaml)
      --date-format string           set start and end date format (in Go style) (default "2006-01-02 15:04:05")
      --dry-run                      fetch entries, but do not sync them
      --end string                   set the end date (defaults to now)
      --force-billed-duration        treat every second spent as billed
  -h, --help                         help for minutes
      --round-to-closest-minute      round time to closest minute
  -s, --source string                set the source of the sync [clockify tempo]
      --source-user string           set the source user ID
      --start string                 set the start date (defaults to 00:00:00)
      --table-hide-column strings    hide table column [summary project client start end]
      --table-sort-by strings        sort table by column [task summary project client start end billable unbillable] (default [start,project,task,summary])
  -t, --target string                set the target of the sync [tempo]
      --target-user string           set the source user ID
      --tags-as-tasks-regex string   regex of the task pattern
      --tempo-password string        set the login password
      --tempo-url string             set the base URL
      --tempo-username string        set the login user ID
      --verbose                      print verbose messages
      --version                      show command version
```

## Usage examples

Depending on the config file, the number of flags can change.

### Simplest command

```shell
# No arguments, no flags, just running the command
$ minutes
```

### Set specific date and time

```shell
# Set the date and time to fetch entries in the given time frame
$ minutes --start "2021-10-07 00:00:00" --end "2021-10-07 23:59:59"
```

```shell
# Specify the start and end date format
$ minutes --date-format "2006-01-02" --start "2021-10-07" --end "2021-10-08"
```

### Use tags for tasks

```shell
# Specify how a tag should look like to be considered as a task
$ minutes --tags-as-tasks-regex '[A-Z]{2,7}-\d{1,6}'
```

### Minute based rounding

```shell
# Set the billed and unbilled time separately
# to round to the closest minute (even if it is zero)
$ minutes --round-to-closest-minute
```

### Format the table output

```shell
# Skip some columns and sort table by -start date
$ minutes --table-sort-by "-start" --table-hide-column "client" --table-hide-column "project"
```

## Config file vs flags

Be aware that not all configuration option is covered by flags, especially not more advanced options, like table column width or truncate settings.

When using the configuration file and flags in conjunction, please note that flags take precedence, hence it can override settings from the configuration file.