imag/libimagtimetrack
Matthias Beyer 5f909c01d9 Implement library
This is a combination of several refactorings and re-thinkings of the
whole library and I think there is not much value in providing the whole
history there.

So this is just a "dump code in" commit.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2017-06-26 17:32:41 +02:00
..
src Implement library 2017-06-26 17:32:41 +02:00
Cargo.toml Implement library 2017-06-26 17:32:41 +02:00
README.md Add documentation file 2017-06-21 18:29:49 +02:00

libimagtimetrack

A library for tracking time events in the imag store.

Store format

Events are stored with a store id like this:

/timetrack/<insert-date-year>/<insert-date-month>/<insert-date-day>/<insert-date-time>-<tag>.ext

Timetrackings contain

  • a comment (optional, free text)
  • a start date
  • an end date
  • a tag

by default and might be extended with more header fields as one likes.

The header of a timetrack "work" entry looks like this:

[event]
tag = "work"
start = "2017-01-02T03:04:05"
end = "2017-01-02T06:07:08"

Normal tags (as in libimagentrytag) are explicitely not used for tagging, so the user has the possibility to use normal tags on these entries as well.

The tag field is of type string, as for one tag, one entry is created. This way, one can track overlapping tags, as in:

imag timetrack start foo
imag timetrack start bar
imag timetrack stop foo
imag timetrack start baz
imag timetrack stop bar
imag timetrack stop baz

The end field is, of course, only set if the event already ended.

Library functionality

The library uses the libimagentrydatetime::datepath::DatePathBuilder for building StoreId objects.