From 37e991b7eb1f57090b98ebc02a7fad6a4971e876 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Mon, 8 Dec 2025 20:11:22 +0800 Subject: Add jvii binary and set default text editor - Add jvii as a new binary target in Cargo configuration - Set JV_TEXT_EDITOR environment variable to "nano" in CLI scripts - Implement jvii binary with version command support - Add get_default_editor() utility that checks JV_TEXT_EDITOR, EDITOR, then defaults to "jvii" --- .cargo/config.toml | 3 +++ scripts/jv_cli.ps1 | 4 ++++ scripts/jv_cli.sh | 4 ++++ src/bin/jvii.rs | 19 +++++++++++++++++++ src/utils/env.rs | 20 ++++++++++++++++++++ src/utils/input.rs | 4 +++- 6 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/bin/jvii.rs diff --git a/.cargo/config.toml b/.cargo/config.toml index 9ba89a6..23ebcc1 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -9,6 +9,9 @@ binaries = [ "jvv", "jvv.exe", + + "jvii", + "jvii.exe" ] ############ diff --git a/scripts/jv_cli.ps1 b/scripts/jv_cli.ps1 index e8d3674..123e28d 100644 --- a/scripts/jv_cli.ps1 +++ b/scripts/jv_cli.ps1 @@ -13,6 +13,10 @@ $SCRIPT_DIR = Split-Path -Parent $MyInvocation.MyCommand.Definition # Next `jv` command will auto-run `jv update` $env:JV_AUTO_UPDATE = "yes" +# Use JV_TEXT_EDITOR to set text editor for `jv track --work` `jv align --work` +# DEFAULT: $EDITOR environment variable, falling back to "jvii" if not set +$env:JV_TEXT_EDITOR = "nano" + ############### ### ALIASES ### ############### diff --git a/scripts/jv_cli.sh b/scripts/jv_cli.sh index 1e382d7..eb7699a 100644 --- a/scripts/jv_cli.sh +++ b/scripts/jv_cli.sh @@ -14,6 +14,10 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" # Next `jv` command will auto-run `jv update` export JV_AUTO_UPDATE=yes +# Use JV_TEXT_EDITOR to set text editor for `jv track --work` `jv align --work` +# DEFAULT: $EDITOR environment variable, falling back to "jvii" if not set +export JV_TEXT_EDITOR=nano + ############### ### ALIASES ### ############### diff --git a/src/bin/jvii.rs b/src/bin/jvii.rs new file mode 100644 index 0000000..e7a20bb --- /dev/null +++ b/src/bin/jvii.rs @@ -0,0 +1,19 @@ +#[derive(Parser, Debug)] +#[command( + disable_help_flag = true, + disable_version_flag = true, + disable_help_subcommand = true, + help_template = "{all-args}" +)] + +struct JustEnoughVcsInputer { + #[command(subcommand)] + command: JustEnoughVcsInputerCommand, +} + +#[derive(Subcommand, Debug)] +enum JustEnoughVcsInputerCommand { + /// Version information + #[command(alias = "--version", alias = "-v")] + Version(VersionArgs), +} diff --git a/src/utils/env.rs b/src/utils/env.rs index 5a37365..c96760b 100644 --- a/src/utils/env.rs +++ b/src/utils/env.rs @@ -47,3 +47,23 @@ pub fn enable_auto_update() -> bool { } false } + +/// Gets the default text editor based on environment variables. +/// +/// The function checks the JV_TEXT_EDITOR and EDITOR environment variables +/// and returns their values if they are set. If neither variable is set, +/// it returns "jvii" as the default editor. +/// +/// # Returns +/// A String containing the default text editor +pub async fn get_default_editor() -> String { + if let Ok(editor) = std::env::var("JV_TEXT_EDITOR") { + return editor; + } + + if let Ok(editor) = std::env::var("EDITOR") { + return editor; + } + + "jvii".to_string() +} diff --git a/src/utils/input.rs b/src/utils/input.rs index 219fe1b..1edcc5d 100644 --- a/src/utils/input.rs +++ b/src/utils/input.rs @@ -1,5 +1,7 @@ use tokio::{fs, process::Command}; +use crate::utils::env::get_default_editor; + /// Confirm the current operation /// Waits for user input of 'y' or 'n' pub async fn confirm_hint(text: impl Into) -> bool { @@ -69,7 +71,7 @@ pub async fn input_with_editor( fs::write(cache_path, default_content).await?; // Get editor from environment variable - let editor = std::env::var("EDITOR").unwrap_or_else(|_| "vi".to_string()); + let editor = get_default_editor().await; // Open editor with cache file let status = Command::new(editor).arg(cache_path).status().await?; -- cgit