1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
mod actions;
pub mod context;
mod kinds;
mod utilities;

use std::ffi::OsString;

pub use kinds::{Bash, Fish, Zsh};
pub use utilities::{detect, should_be_colored, ColorStrategy, ShellName};

pub trait Shell {
    fn name(&self) -> &'static str;

    fn edit(&self, editor: Option<OsString>, path: &str) -> Option<String> {
        editor.map(|e| format!("{} '{}'", e.to_string_lossy(), path))
    }

    fn init(&self, binary: &str, autoload: bool) -> String;
    fn set_var(&self, var: &str, value: &str) -> String;
    fn set_alias(&self, var: &str, value: &str) -> String;
    fn set_function(&self, var: &str, value: &str) -> String;
    fn unset_var(&self, var: &str) -> String;
    fn unset_alias(&self, var: &str) -> String;
    fn unset_function(&self, var: &str) -> String;
}