Skip to main content

Shell

Trait Shell 

Source
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§

Source

fn set_env_var( &self, f: &mut impl Write, env_var: &str, value: &str, ) -> Result<(), ShellError>

Set an env var by export-ing it.

Source

fn unset_env_var( &self, f: &mut impl Write, env_var: &str, ) -> Result<(), ShellError>

Unset an env var by unset-ing it.

Source

fn run_script(&self, f: &mut impl Write, path: &Path) -> Result<(), ShellError>

Run a script in the current shell.

Source

fn extension(&self) -> &str

The extension that shell scripts for this interpreter usually use.

Source

fn executable(&self) -> &str

The executable that can be called to start this shell.

Source

fn create_run_script_command(&self, path: &Path) -> Command

Constructs a Command that will execute the specified script by this shell.

Provided Methods§

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

fn path_separator(&self, platform: &Platform) -> &str

Path separator

Source

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.

Source

fn format_env_var(&self, var_name: &str) -> String

Format the environment variable for the shell.

Source

fn echo(&self, f: &mut impl Write, text: &str) -> Result

Emits echoing certain text to stdout.

Source

fn print_env(&self, f: &mut impl Write) -> Result

Emits writing all current environment variables to stdout.

Source

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.

Source

fn parse_env<'i>(&self, env: &'i str) -> HashMap<&'i str, &'i str>

Parses environment variables emitted by the Shell::env command.

Source

fn line_ending(&self) -> &str

Get the line ending for this shell. Only CmdExe uses \r\n.

Source

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()).

Source

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 restore
  • backup_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.

Implementors§