mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-11-14 12:53:43 +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.
41 lines
1.0 KiB
Rust
41 lines
1.0 KiB
Rust
use std::fs::File;
|
|
use std::io::Write;
|
|
|
|
use shadow_rs::SdResult;
|
|
use shadow_rs::ShadowBuilder;
|
|
|
|
fn main() {
|
|
let shadow_build = ShadowBuilder::builder().hook(raw_hook).build().unwrap();
|
|
|
|
let is_flake_build = shadow_build
|
|
.map
|
|
.get("BRANCH")
|
|
.map_or_else(|| true, |entry| entry.v.is_empty());
|
|
|
|
if is_flake_build {
|
|
ShadowBuilder::builder().hook(flake_hook).build().unwrap();
|
|
}
|
|
}
|
|
|
|
const RAW_VERSION_CONST: &str = r##"pub const LONG_VERSION:&str = shadow_rs::formatcp!(r#"{}
|
|
branch:{}
|
|
commit_hash:{}
|
|
build_env:{},{}"#,PKG_VERSION, BRANCH, COMMIT_HASH, RUST_VERSION, RUST_CHANNEL
|
|
);
|
|
"##;
|
|
|
|
fn raw_hook(mut file: &File) -> SdResult<()> {
|
|
writeln!(file, "{RAW_VERSION_CONST}")?;
|
|
Ok(())
|
|
}
|
|
|
|
const FLAKE_VERSION_CONST: &str = r##"pub const LONG_VERSION:&str = shadow_rs::formatcp!(r#"{}
|
|
commit_hash:{}
|
|
build_env:{},{}"#,PKG_VERSION, env!("COMMIT_HASH"), RUST_VERSION, RUST_CHANNEL
|
|
);"##;
|
|
|
|
fn flake_hook(mut file: &File) -> SdResult<()> {
|
|
writeln!(file, "{FLAKE_VERSION_CONST}")?;
|
|
Ok(())
|
|
}
|