Skip to content

Commit

Permalink
Merge pull request #417 from djmitche/readme-no-more-lib
Browse files Browse the repository at this point in the history
Remove mention of integration-tests and taskchampion-lib from README.md
  • Loading branch information
djmitche authored Jul 7, 2024
2 parents e725a38 + dc2cfd3 commit c062a4f
Showing 1 changed file with 2 additions and 27 deletions.
29 changes: 2 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,39 +9,14 @@ See the [documentation](https://gothenburgbitfactory.org/taskchampion/) for more

## Structure

There are four crates here:
There are two crates here:

* [taskchampion](./taskchampion) - the core of the tool
* [taskchampion-lib](./lib) - glue code to use _taskchampion_ from C
* [integration-tests](./integration-tests) (private) - integration tests covering _taskchampion_ and _taskchampion-lib_.
* [xtask](./xtask) (private) - implementation of the `cargo xtask codegen` command

## Code Generation

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`.
* [xtask](./xtask) (private) - implementation of the `cargo xtask msrv` command

## Rust API

The Rust API, as defined in [the docs](https://docs.rs/taskchampion/latest/taskchampion/), supports simple creation and manipulation of replicas and the tasks they contain.

The Rust API follows semantic versioning.
As this is still in the `0.x` phase, so breaking changes may occur but will be indicated with a change to the minor version.

## C API

The `taskchampion-lib` crate generates libraries suitable for use from C (or any C-compatible language).
It is a "normal" Cargo crate that happens to export a number of `extern "C"` symbols, and also contains a `taskchampion.h` defining those symbols.

*WARNING: the C API is not yet stable!*

It is your responsibility to link this into a form usable in your own build process.
For example, in a typical CMake C++ project, CMakeRust can do this for you.
In many cases, this is as simple as a rust crate with `src/lib.rs` containing

```rust
pub use taskchampion_lib::*;
```

Arrange to use the header file, `lib/taskchampion.h`, by copying it or adding its directory to your include search path.
[Future work](https://github.com/GothenburgBitFactory/taskwarrior/issues/2870) will provide better automation for this process.

0 comments on commit c062a4f

Please sign in to comment.