diff options
| author | rottedfm <rottedfm@proton.me> | 2026-08-19 11:21:47 -0400 |
|---|---|---|
| committer | rottedfm <rottedfm@proton.me> | 2026-08-19 11:21:47 -0400 |
| commit | ea0bd36167b684c0accdb5ce2b2e21b8d84aeb25 (patch) | |
| tree | be1267972b5de2f1ae592577dfabce67f1fe6e87 /build.rs | |
| parent | 8c0b4c53b130555f040884c1f52b90f16b23e241 (diff) | |
feat: implement Helix-style modal buffer under DO-178C DAL-C
The repository was an unmodified ratatui component template: no editor
code, JSON5 config, and placeholder widgets. This establishes the first
working baseline — `moji <file>` opens a file into a ropey rope and edits
it with Helix selection-first semantics.
Requirements, implementation and tests land together because they must:
the traceability check rejects requirements with no implementation and
tests naming requirements that do not exist, so neither half is a valid
commit on its own.
Package renamed to mojibake-editor (mojibake was taken on crates.io);
binary is moji, library target stays mojibake.
Class: New behaviour
Requirements: MJB-HLR-001..019, MJB-LLR-001..205
Derived: MJB-DR-001..007 (DR-001 resolved, six open for review)
Verified: cargo build; clippy --all-targets -D warnings clean;
cargo test 294 passing; ./scripts/check-trace.sh 98/98/98;
cargo package clean
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'build.rs')
| -rw-r--r-- | build.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..20c813a --- /dev/null +++ b/build.rs @@ -0,0 +1,37 @@ +use anyhow::Result; +use vergen_gix::{Build, Cargo, Emitter, Gix}; + +/// Fallback used when the crate is built outside a git checkout (e.g. from a +/// packaged `.crate` file), so `env!("VERGEN_GIT_REMOTE_URL")` always resolves. +const UNKNOWN_REMOTE: &str = "unknown"; + +fn main() -> Result<()> { + let build = Build::all_build(); + let gix = Gix::all_git(); + let cargo = Cargo::all_cargo(); + Emitter::default() + .default_on_error() + .add_instructions(&build)? + .add_instructions(&gix)? + .add_instructions(&cargo)? + .emit()?; + + emit_git_remote_url(); + Ok(()) +} + +/// vergen only reports the local checkout (sha, branch, describe...), so read the +/// `origin` remote out of the same repository and expose it alongside the rest of +/// the `VERGEN_GIT_*` variables. +fn emit_git_remote_url() { + let url = git_remote_url().unwrap_or_else(|| UNKNOWN_REMOTE.to_string()); + println!("cargo:rustc-env=VERGEN_GIT_REMOTE_URL={url}"); + println!("cargo:rerun-if-changed=.git/config"); +} + +fn git_remote_url() -> Option<String> { + let repo = gix::discover(env!("CARGO_MANIFEST_DIR")).ok()?; + let remote = repo.find_remote("origin").ok()?; + let url = remote.url(gix::remote::Direction::Fetch)?; + Some(url.to_bstring().to_string()) +} |
