610e3e7f9d | ||
---|---|---|
assets | ||
completions/bash | ||
docs | ||
scripts | ||
src | ||
.gitignore | ||
.gitlab-ci.yml | ||
CHANGELOG.md | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
debpackage.sh |
README.md
Tiempo
A timetrap compatible command line time tracking application. Read the fine manual.
Installation
For Archlinux (and derivatives) users
There are a binary and a source package in the AUR:
For every other linux users
Go to gitlab releases page
and grab the latest binary for your linux. There is a .deb
file for Debian and
Ubuntu as well as a binary for any x86_64
Linux.
For Rust developers
You have cargo
! you can run:
cargo install tiempo
However that will not install the beautiful man page. Although you can still see it at https://tiempo.categulario.xyz .
For everyone else
You need to compile tiempo
by yourself. But don't worry! It is not that hard.
Just clone the repository, make sure
you have rust installed and run:
cargo build --release
inside the repository. The binary will be named t
(or t.exe
if you use
windows) and it is located inside the target/release
directory that was
created during compilation.
Why did you write this instead of improving timetrap?
- timetrap is hard to install,
hard to keep updated (because
of ruby). With tiempo you can get (or build) a binary, put it somewhere in
your
PATH
, and it will just work forever in that machine. I'm bundling sqlite. - timetrap is slow (no way around it, because of ruby), some commands take up to a second. Tiempo always feels snappy.
- needed major refactor to fix the timezone problem (in a language I'm not proficient with). I was aware of this problem and designed tiempo to store timestamps in UTC while at the same time being able to work with a database made by timetrap without messing up. And there are a lot of tests backing this assertions.
Other advantages
- Columns in the output are always aligned.
- Fixed some input inconsistencies.
- CLI interface is easier to discover (ask -h for any sub-command)
- End times are printed with +1d to indicate that the activity ended the next day in the 'text' formatter.
- Solved some old issues in timetrap.
- Added new features!
How to build
You need rust, then clone the repo and simply run
cargo test
to check that everything is working, and then
cargo build --release
to have a binary at target/release/t
that you can then move to a
directory in your PATH
or use it by its absoulte or relative paths.
Run
t --help
to see the options.
Development database
When developing I prefer not to mess with my own database, so I use this .env
file:
export TIMETRAP_CONFIG_FILE=/absolute/path/to/repo/dev_config.toml
PS1="$ "
and when I want to test some commands against such config file I just source it:
source .env
cargo run -- in 'hola'
Documentation
The docs are written using sphinx. To
install the required dependencies enter the docs
directory and create a virual
environment:
virtualenv .venv
then activate it and install the dependencies:
source .venv/bin/activate
pip install -r requirements.txt
To build the docs just do:
make html
for the html version (output located at docs/build/html
), or
make man
for the man page (output located at docs/build/man/tiempo.1
). To test the man
page you can do:
man -l build/man/tiempo.1
To get a live-reloaded server with the html docs do:
sphinx-autobuild source/ build/html/
The contents of the man page are located in docs/source/index.rst
,
formatted as
reStructuredText.
Special Thanks
To timetrap for existing, to samg for creating it. It is the tool I was looking for and whose design I took as reference, keeping compatibility when possible.
Release checklist
(mostly to remind myself)
- Ensure tests pass and that clippy doesn't complain
- Add documentation about the new features
- Create an entry in
CHANGELOG.md
with the target version, stage it but don't commit - run
vbump
- git push && git push --tags && cargo publish && cargo build --release && cp target/release/t ~/.local/bin/t