Skip to content

Commit

Permalink
Implement --norc option to skip sourcing .shellrc
Browse files Browse the repository at this point in the history
  • Loading branch information
certik committed Sep 30, 2024
1 parent 38b014a commit 9c62bb6
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions crates/shell/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ struct Options {
#[clap(long)]
interact: bool,

/// Do not source ~/.shellrc on startup
#[clap(long)]
norc: bool,

#[clap(short, long)]
debug: bool,
}
Expand All @@ -34,7 +38,7 @@ fn init_state() -> ShellState {
ShellState::new(env_vars, &cwd, commands::get_commands())
}

async fn interactive(state: Option<ShellState>) -> miette::Result<()> {
async fn interactive(state: Option<ShellState>, norc: bool) -> miette::Result<()> {
let config = Config::builder()
.history_ignore_space(true)
.completion_type(CompletionType::List)
Expand Down Expand Up @@ -66,7 +70,7 @@ async fn interactive(state: Option<ShellState>) -> miette::Result<()> {

// Load ~/.shellrc
let shellrc_file: PathBuf = [home.as_path(), Path::new(".shellrc")].iter().collect();
if Path::new(shellrc_file.as_path()).exists() {
if !norc && Path::new(shellrc_file.as_path()).exists() {
let line = "source '".to_owned() + shellrc_file.to_str().unwrap() + "'";
let prev_exit_code = execute(&line, &mut state)
.await
Expand Down Expand Up @@ -168,10 +172,10 @@ async fn main() -> miette::Result<()> {
}
execute(&script_text, &mut state).await?;
if options.interact {
interactive(Some(state)).await?;
interactive(Some(state), options.norc).await?;
}
} else {
interactive(None).await?;
interactive(None, options.norc).await?;
}

Ok(())
Expand Down

0 comments on commit 9c62bb6

Please sign in to comment.