TaskChampion is an open-source personal task-tracking application. Use it to keep track of what you need to do, with a quick command-line interface and flexible sorting and filtering. It is modeled on TaskWarrior, but not a drop-in replacement for that application.
See the documentation for more!
TaskChampion currently functions as a "testbed" for new functionality that may later be incorporated into TaskWarrior. It can be developed without the requirements of compatibliity, allowing us to explore and fix edge-cases in things like the replica-synchronization model.
While you are welcome to help out, you should do so with the awareness that your work might never be used. But, if you just want to get some practice with Rust, we'd be happy to have you.
There are five crates here:
- taskchampion - the core of the tool
- taskchampion-cli - the command-line binary
- taskchampion-sync-server - the server against which
task sync
operates - taskchampion-lib - glue code to use taskchampion from C
- integration-tests - integration tests covering taskchampion-cli, taskchampion-sync-server, and taskchampion-lib.
The taskchampion_lib crate uses a bit of code generation to create the lib/taskchampion.h
header file.
To regenerate this file, run cargo xtask codegen
.
The taskchampion-lib
crate generates libraries suitable for use from C (or any C-compatible language).
The necessary bits are:
- a shared object in
target/$PROFILE/deps
(e.g.,target/debug/deps/libtaskchampion.so
) - a static library in
target/$PROFILE
(e.g.,target/debug/libtaskchampion.a
) - a header file,
lib/taskchampion.h
.
Downstream consumers may use either the static or dynamic library, as they prefer.
NOTE: on Windows, the "BCrypt" library must be included when linking to taskchampion.
The mdbook
configuration contains a "preprocessor" implemented in the taskchampion-cli
crate in order to reflect CLI usage information into the generated book.
Tihs preprocessor is not built by default.
To (re)build it, run cargo build -p taskchampion-cli --features usage-docs --bin usage-docs
.