aboutsummaryrefslogtreecommitdiff
path: root/src/cli.rs
diff options
context:
space:
mode:
authorrottedfm <rottedfm@proton.me>2026-08-19 11:24:55 -0400
committerrottedfm <rottedfm@proton.me>2026-08-19 11:24:55 -0400
commit8e16347b0eb329e84892af8ece36886324c95f62 (patch)
treebe1267972b5de2f1ae592577dfabce67f1fe6e87 /src/cli.rs
parentc6ae4660d1cc2414b22c492c5e819d009c8187c2 (diff)
parentea0bd36167b684c0accdb5ce2b2e21b8d84aeb25 (diff)
Merge branch 'buffer-implementation'HEADmain
Establishes the first working baseline: moji <file> opens a file into a ropey rope and edits it with Helix selection-first modal editing, under a DO-178C DAL-C requirements and traceability process. Prior to this, main tracked four files and src/main.rs was still println!("Hello, world!") — there was no buildable state to build on. Verified on a fresh clone of the branch with no untracked files: cargo build; clippy --all-targets -D warnings clean; 294 tests passing; scripts/check-trace.sh reports 98/98 requirements traced in both directions. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'src/cli.rs')
-rw-r--r--src/cli.rs54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/cli.rs b/src/cli.rs
new file mode 100644
index 0000000..9b50bcb
--- /dev/null
+++ b/src/cli.rs
@@ -0,0 +1,54 @@
+use std::path::PathBuf;
+
+use clap::Parser;
+
+use crate::config::{get_config_dir, get_data_dir};
+
+#[derive(Parser, Debug)]
+#[command(author, version = version(), about)]
+pub struct Cli {
+ /// File to edit. A path that does not exist is created on write.
+ // MJB-LLR-111, MJB-LLR-112
+ #[arg(value_name = "FILE")]
+ pub file: Option<PathBuf>,
+
+ /// Tick rate, i.e. number of ticks per second
+ #[arg(short, long, value_name = "FLOAT", default_value_t = 4.0)]
+ pub tick_rate: f64,
+
+ /// Frame rate, i.e. number of frames per second
+ #[arg(short, long, value_name = "FLOAT", default_value_t = 60.0)]
+ pub frame_rate: f64,
+}
+
+const VERSION_MESSAGE: &str = concat!(
+ env!("CARGO_PKG_VERSION"),
+ "-",
+ env!("VERGEN_GIT_DESCRIBE"),
+ " (",
+ env!("VERGEN_BUILD_DATE"),
+ ")"
+);
+
+/// The `origin` remote of the checkout this binary was built from, emitted by
+/// `build.rs`.
+const GIT_REMOTE_URL: &str = env!("VERGEN_GIT_REMOTE_URL");
+
+pub fn version() -> String {
+ let author = clap::crate_authors!();
+
+ // let current_exe_path = PathBuf::from(clap::crate_name!()).display().to_string();
+ let config_dir_path = get_config_dir().display().to_string();
+ let data_dir_path = get_data_dir().display().to_string();
+
+ format!(
+ "\
+{VERSION_MESSAGE}
+
+Authors: {author}
+
+Repository: {GIT_REMOTE_URL}
+Config directory: {config_dir_path}
+Data directory: {data_dir_path}"
+ )
+}