pub trait Shell {
Show 21 methods
// Required methods
fn set_env_var(
&self,
f: &mut impl Write,
env_var: &str,
value: &str,
) -> Result<(), ShellError>;
fn unset_env_var(
&self,
f: &mut impl Write,
env_var: &str,
) -> Result<(), ShellError>;
fn run_script(
&self,
f: &mut impl Write,
path: &Path,
) -> Result<(), ShellError>;
fn extension(&self) -> &str;
fn executable(&self) -> &str;
fn create_run_script_command(&self, path: &Path) -> Command;
// Provided methods
fn force_utf8(&self, _f: &mut impl Write) -> Result<(), ShellError> { ... }
fn source_completions(
&self,
_f: &mut impl Write,
_completions_dir: &Path,
) -> Result<(), ShellError> { ... }
fn can_run_script(&self, path: &Path) -> bool { ... }
fn run_command<'a>(
&self,
f: &mut impl Write,
command: impl IntoIterator<Item = &'a str> + 'a,
) -> Result { ... }
fn set_path(
&self,
f: &mut impl Write,
paths: &[PathBuf],
modification_behavior: PathModificationBehavior,
platform: &Platform,
) -> Result<(), ShellError> { ... }
fn path_separator(&self, platform: &Platform) -> &str { ... }
fn path_var(&self, platform: &Platform) -> &str { ... }
fn format_env_var(&self, var_name: &str) -> String { ... }
fn echo(&self, f: &mut impl Write, text: &str) -> Result { ... }
fn print_env(&self, f: &mut impl Write) -> Result { ... }
fn write_script(&self, f: &mut impl Write, script: &str) -> Result<()> { ... }
fn parse_env<'i>(&self, env: &'i str) -> HashMap<&'i str, &'i str> { ... }
fn line_ending(&self) -> &str { ... }
fn completion_script_location(&self) -> Option<&'static Path> { ... }
fn restore_env_var(
&self,
f: &mut impl Write,
key: &str,
backup_key: &str,
) -> Result<(), ShellError> { ... }
}Expand description
A trait for generating shell scripts. The trait is implemented for each shell individually.
§Example
use std::path::PathBuf;
use rattler_shell::shell::Bash;
use rattler_shell::shell::Shell;
let mut script = String::new();
let shell = Bash;
shell.set_env_var(&mut script, "FOO", "bar").unwrap();
assert_eq!(script, "export FOO=bar\n");Required Methods§
Sourcefn set_env_var(
&self,
f: &mut impl Write,
env_var: &str,
value: &str,
) -> Result<(), ShellError>
fn set_env_var( &self, f: &mut impl Write, env_var: &str, value: &str, ) -> Result<(), ShellError>
Set an env var by export-ing it.
Sourcefn unset_env_var(
&self,
f: &mut impl Write,
env_var: &str,
) -> Result<(), ShellError>
fn unset_env_var( &self, f: &mut impl Write, env_var: &str, ) -> Result<(), ShellError>
Unset an env var by unset-ing it.
Sourcefn run_script(&self, f: &mut impl Write, path: &Path) -> Result<(), ShellError>
fn run_script(&self, f: &mut impl Write, path: &Path) -> Result<(), ShellError>
Run a script in the current shell.
Sourcefn executable(&self) -> &str
fn executable(&self) -> &str
The executable that can be called to start this shell.
Sourcefn create_run_script_command(&self, path: &Path) -> Command
fn create_run_script_command(&self, path: &Path) -> Command
Constructs a Command that will execute the specified script by this
shell.
Provided Methods§
Sourcefn force_utf8(&self, _f: &mut impl Write) -> Result<(), ShellError>
fn force_utf8(&self, _f: &mut impl Write) -> Result<(), ShellError>
Write a command to the script that forces the usage of UTF8-encoding for the shell script.
Sourcefn source_completions(
&self,
_f: &mut impl Write,
_completions_dir: &Path,
) -> Result<(), ShellError>
fn source_completions( &self, _f: &mut impl Write, _completions_dir: &Path, ) -> Result<(), ShellError>
Source completion scripts for the shell from a given prefix path.
Note: the completions_dir is the directory where the completions are
stored. You can use Self::completion_script_location to get the
correct location for a given shell type.
Sourcefn can_run_script(&self, path: &Path) -> bool
fn can_run_script(&self, path: &Path) -> bool
Test to see if the path can be executed by the shell, based on the extension of the path.
Sourcefn run_command<'a>(
&self,
f: &mut impl Write,
command: impl IntoIterator<Item = &'a str> + 'a,
) -> Result
fn run_command<'a>( &self, f: &mut impl Write, command: impl IntoIterator<Item = &'a str> + 'a, ) -> Result
Executes a command in the current shell. Use Self::run_script when
you want to run another shell script.
Sourcefn set_path(
&self,
f: &mut impl Write,
paths: &[PathBuf],
modification_behavior: PathModificationBehavior,
platform: &Platform,
) -> Result<(), ShellError>
fn set_path( &self, f: &mut impl Write, paths: &[PathBuf], modification_behavior: PathModificationBehavior, platform: &Platform, ) -> Result<(), ShellError>
Set the PATH variable to the given paths.
Sourcefn path_separator(&self, platform: &Platform) -> &str
fn path_separator(&self, platform: &Platform) -> &str
Path separator
Sourcefn path_var(&self, platform: &Platform) -> &str
fn path_var(&self, platform: &Platform) -> &str
Returns the name of the PATH variable for the given platform. On Windows, path variables are case-insensitive but not all shells treat them case-insensitive.
Sourcefn format_env_var(&self, var_name: &str) -> String
fn format_env_var(&self, var_name: &str) -> String
Format the environment variable for the shell.
Sourcefn print_env(&self, f: &mut impl Write) -> Result
fn print_env(&self, f: &mut impl Write) -> Result
Emits writing all current environment variables to stdout.
Sourcefn write_script(&self, f: &mut impl Write, script: &str) -> Result<()>
fn write_script(&self, f: &mut impl Write, script: &str) -> Result<()>
Write the script to the writer and do some post-processing for line-endings. Only really relevant for cmd.exe scripts.
Sourcefn parse_env<'i>(&self, env: &'i str) -> HashMap<&'i str, &'i str>
fn parse_env<'i>(&self, env: &'i str) -> HashMap<&'i str, &'i str>
Parses environment variables emitted by the Shell::env command.
Sourcefn line_ending(&self) -> &str
fn line_ending(&self) -> &str
Get the line ending for this shell. Only CmdExe uses \r\n.
Sourcefn completion_script_location(&self) -> Option<&'static Path>
fn completion_script_location(&self) -> Option<&'static Path>
Return the location where completion scripts are found in a Conda environment.
- bash:
share/bash-completion/completions - zsh:
share/zsh/site-functions - fish:
share/fish/vendor_completions.d
The return value must be joined with
prefix.join(completion_script_location()).
Sourcefn restore_env_var(
&self,
f: &mut impl Write,
key: &str,
backup_key: &str,
) -> Result<(), ShellError>
fn restore_env_var( &self, f: &mut impl Write, key: &str, backup_key: &str, ) -> Result<(), ShellError>
Restores an environment variable from its backup if it exists, otherwise unsets it.
§Arguments
key- The name of the environment variable to restorebackup_key- The name of the backup environment variable
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.