mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-11-15 05:12:28 +01:00
komorebi for KDE is built up as a Cargo workspace with one crate per concern, the way komorebi and komorebi for Mac are. The first two crates are the `komorebi` daemon, which does nothing yet but report its version, and `version`, which owns the string every binary of the workspace reports. `version` reads the commit from git when HEAD is on a branch, and from COMMIT_HASH otherwise. A jj workspace leaves HEAD detached, so `.cargo/config.toml` defaults the variable to `unknown` (nix will set the real commit), and a plain `cargo build` in a jj checkout compiles. The tooling files come from komorebi for Mac: the licence, deny.toml (trimmed to the licences in use), rustfmt.toml and the toolchain file. `just check` runs the formatting check, clippy and rustdoc with warnings denied, and the tests. rustfmt.toml uses an unstable option, so formatting needs a nightly rustfmt. The `rg` calls in `just lint` name a path because rg reads stdin when it is given none and stdin is not a terminal. The README and CONTRIBUTING.md say how to run, check and commit.
34 lines
1.3 KiB
Rust
34 lines
1.3 KiB
Rust
//! The version string every komorebi binary reports.
|
|
//!
|
|
//! [`LONG_VERSION`] is the package version followed by the commit the binary
|
|
//! was built from and the Rust toolchain that built it. The binaries pass it to
|
|
//! their command line parsers, so `komorebi --version` and
|
|
//! `komorebic --version` report the same thing.
|
|
//!
|
|
//! # Where the commit comes from
|
|
//!
|
|
//! A build from a git checkout whose `HEAD` is on a branch asks git for the
|
|
//! branch and the commit. Any other build has nothing to ask: a detached `HEAD`
|
|
//! (which is what a jj workspace leaves), a source tree with no `.git`
|
|
//! directory, or a sandboxed nix build. Such a build reads the commit from the
|
|
//! `COMMIT_HASH` environment variable, and does not compile without it.
|
|
//! [`.cargo/config.toml`](https://github.com/LGUG2Z/komorebi-for-kde/blob/master/.cargo/config.toml)
|
|
//! defaults the variable to `unknown`, and nix sets it to the real commit.
|
|
|
|
shadow_rs::shadow!(build);
|
|
|
|
/// The package version, the commit and the toolchain of this build, one per
|
|
/// line.
|
|
///
|
|
/// The first line is the package version, which every crate in the workspace
|
|
/// shares.
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// let first_line = version::LONG_VERSION.lines().next();
|
|
///
|
|
/// assert_eq!(first_line, Some(env!("CARGO_PKG_VERSION")));
|
|
/// ```
|
|
pub use build::LONG_VERSION;
|