| Crates.io | rustomato |
| lib.rs | rustomato |
| version | 0.0.9 |
| created_at | 2025-05-21 19:11:36.236132+00 |
| updated_at | 2025-05-21 19:11:36.236132+00 |
| description | Rustomato is a simple Pomodoro timer for the command line |
| homepage | |
| repository | https://github.com/suhlig/rustomato |
| max_upload_size | |
| id | 1683893 |
| size | 97,521 |
I am learning Rust by implementing a simple Pomodoro timer.
$ rustomato pomodoro [start] # Starts a new Pomodoro. Auto-finishes the currently active break if there is one.
$ rustomato pomodoro annotate # Annotates a¹ Pomodoro.
$ rustomato pomodoro interrupt # Mark a¹ Pomodoro as interrupted.
$ rustomato pomodoro log # Log a previously finished pomodoro.
$ rustomato break [start] # Starts a break. Auto-finishes the currently active Pomodoro if there is one.
[1] the running, if there is one, or the most recently completed, or the given
pomodoro and break will block until the time is over. If the command is interrupted with Control-C (SIGINT), the currently running Pomodoro is cancelled immediately. If a break is currently running, it is finished.
The possible application states are valid for an instance of the database (as pointed to by $RUSTOMATO_DATABASE_URL, which defaults to $RUSTOMATO_ROOT/data.db):
The default for $RUSTOMATO_ROOT is $HOME/.rustomato.
WIP - look at https://github.com/crate-ci/cargo-release/blob/master/src/cmd.rs for an example
Until we have them, here is how to use notifications:
$ rustomato pomodoro start && terminal-notifier -message "Pomodoro is over" -title rustomato -sound glass -group rustomato || terminal-notifier -message "Pomodoro cancelled" -title rustomato -sound glass -group rustomato
If you prefer tmux:
$ rustomato pomodoro start && tmux display-message "Pomodoro is over" || tmux display-message "Pomodoro cancelled"
Or, on a Mac:
$ rustomato pomodoro start && say "Pomodoro is over" || say "Pomodoro cancelled"
There is a Concourse pipeline in ci. It releases every tag. Note that this needs git push --follow-tags.
rustupcargo test
cargo watch -x test for fast iterationcargo install cargo-watchcargo run -- pomodorocargo build --release (binary will be found in target/release/)--forcerustomato pomodoro annotate [WORDS] adds an annotation to
rustomato process,--pomodoro UUIDannotations table, joined onto schedulablesWORDS are given, they are taked from STDINrustomato pomodoro interrupt --external | --internal marks the currently running Pomodoro as interrupted
external-interrupt or internal-interruptcargo metadata --no-deps --format-version 1 | jq --raw-output '.packages[] | select(.targets[].kind[] | contains("bin")) | .version'