You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
937 B
37 lines
937 B
use super::shell::Shell; |
|
use indoc::indoc; |
|
use std::path::PathBuf; |
|
|
|
#[derive(Debug)] |
|
pub struct Zsh; |
|
|
|
impl Shell for Zsh { |
|
fn into_structopt_shell(&self) -> structopt::clap::Shell { |
|
structopt::clap::Shell::Zsh |
|
} |
|
|
|
fn path(&self, path: &PathBuf) -> String { |
|
format!("export PATH={:?}:$PATH", path.to_str().unwrap()) |
|
} |
|
|
|
fn set_env_var(&self, name: &str, value: &str) -> String { |
|
format!("export {}={:?}", name, value) |
|
} |
|
|
|
fn use_on_cd(&self, _config: &crate::config::FnmConfig) -> String { |
|
indoc!( |
|
r#" |
|
autoload -U add-zsh-hook |
|
_fnm_autoload_hook () { |
|
if [[ -f .node-version || -f .nvmrc ]]; then |
|
fnm use |
|
fi |
|
} |
|
|
|
add-zsh-hook chpwd _fnm_autoload_hook \ |
|
&& _fnm_autoload_hook |
|
"# |
|
) |
|
.into() |
|
} |
|
}
|
|
|