diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bin/jvii.rs | 19 | ||||
| -rw-r--r-- | src/utils/env.rs | 20 | ||||
| -rw-r--r-- | src/utils/input.rs | 4 |
3 files changed, 42 insertions, 1 deletions
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<String>) -> 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?; |
