Skip to content

Commit

Permalink
Refactor ruff_cli's run method to return on each branch (#7040)
Browse files Browse the repository at this point in the history
## Summary

I think the fallthrough here for some branches is a little confusing.
Now each branch either runs a command that returns `Result<ExitStatus>`,
or runs a command that returns `Result<()>` and then explicitly returns
`Ok(ExitStatus::SUCCESS)`.
  • Loading branch information
charliermarsh committed Sep 1, 2023
1 parent 0489bbc commit 08e2467
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 12 deletions.
10 changes: 5 additions & 5 deletions crates/ruff_cli/src/commands/config.rs
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
use crate::ExitStatus;
use anyhow::{anyhow, Result};

use ruff_workspace::options::Options;

#[allow(clippy::print_stdout)]
pub(crate) fn config(key: Option<&str>) -> ExitStatus {
pub(crate) fn config(key: Option<&str>) -> Result<()> {
match key {
None => print!("{}", Options::metadata()),
Some(key) => match Options::metadata().get(key) {
None => {
println!("Unknown option");
return ExitStatus::Error;
return Err(anyhow!("Unknown option: {key}"));
}
Some(entry) => {
print!("{entry}");
}
},
}
ExitStatus::Success
Ok(())
}
23 changes: 16 additions & 7 deletions crates/ruff_cli/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -139,18 +139,27 @@ quoting the executed command, along with the relevant file contents and `pyproje
if let Some(rule) = rule {
commands::rule::rule(rule, format)?;
}
Ok(ExitStatus::Success)
}
Command::Config { option } => {
commands::config::config(option.as_deref())?;
Ok(ExitStatus::Success)
}
Command::Linter { format } => {
commands::linter::linter(format)?;
Ok(ExitStatus::Success)
}
Command::Clean => {
commands::clean::clean(log_level)?;
Ok(ExitStatus::Success)
}
Command::Config { option } => return Ok(commands::config::config(option.as_deref())),
Command::Linter { format } => commands::linter::linter(format)?,
Command::Clean => commands::clean::clean(log_level)?,
Command::GenerateShellCompletion { shell } => {
shell.generate(&mut Args::command(), &mut stdout());
Ok(ExitStatus::Success)
}
Command::Check(args) => return check(args, log_level),
Command::Format(args) => return format(args, log_level),
Command::Check(args) => check(args, log_level),
Command::Format(args) => format(args, log_level),
}

Ok(ExitStatus::Success)
}

fn format(args: FormatCommand, log_level: LogLevel) -> Result<ExitStatus> {
Expand Down

0 comments on commit 08e2467

Please sign in to comment.