From f82f577b6dd65c973d96faa2df7682538b517119 Mon Sep 17 00:00:00 2001 From: sigoden Date: Thu, 7 Mar 2024 06:31:23 +0800 Subject: feat: add nushell integration (#344) --- src/config/role.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/config') diff --git a/src/config/role.rs b/src/config/role.rs index 2bff545..7b4a117 100644 --- a/src/config/role.rs +++ b/src/config/role.rs @@ -28,17 +28,24 @@ impl Role { pub fn for_execute() -> Self { let os = detect_os(); let (shell, _, _) = detect_shell(); - let combine = match shell.as_str() { - "nushell" | "powershell" => ";", - _ => "&&", + let (shell, use_semicolon) = match (shell.as_str(), os.as_str()) { + ("nushell", "windows") => ("cmd", true), + ("nushell", _) => ("bash", true), + ("powershell", _) => ("powershell", true), + ("pwsh", _) => ("powershell", false), + _ => (shell.as_str(), false), + }; + let combine = if use_semicolon { + "\nIf multiple steps required try to combine them together using ';'.\nIf it already combined with '&&' try to replace it with ';'.".to_string() + } else { + "\nIf multiple steps required try to combine them together using &&.".to_string() }; Self { name: Self::EXECUTE.into(), prompt: format!( r#"Provide only {shell} commands for {os} without any description. +Ensure the output is a valid {shell} command. {combine} If there is a lack of details, provide most logical solution. -Ensure the output is a valid {shell} command. -If multiple steps required try to combine them together using {combine}. Provide only plain text without Markdown formatting. Do not provide markdown formatting such as ```"# ), -- cgit v1.2.3