Compare commits

..

No commits in common. "327d03b066736e006c19a6926060c1c3e4a3d111" and "4a57561d7b7b9efd85ebadeb31da00e6c40b97e6" have entirely different histories.

3 changed files with 62 additions and 31 deletions

6
Cargo.lock generated
View file

@ -101,7 +101,7 @@ dependencies = [
[[package]]
name = "eh"
version = "0.1.6"
version = "0.1.5"
dependencies = [
"clap",
"dialoguer",
@ -116,7 +116,7 @@ dependencies = [
[[package]]
name = "eh-log"
version = "0.1.6"
version = "0.1.5"
dependencies = [
"yansi",
]
@ -421,7 +421,7 @@ checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
[[package]]
name = "xtask"
version = "0.1.6"
version = "0.1.5"
dependencies = [
"clap",
"clap_complete",

View file

@ -10,7 +10,7 @@ edition = "2024"
license = "MPL-2.0"
readme = true
rust-version = "1.91.0"
version = "0.1.6"
version = "0.1.5"
[workspace.dependencies]
clap = { default-features = false, features = [ "std", "help", "derive" ], version = "4.5.56" }

View file

@ -1,6 +1,7 @@
use std::{env, path::Path};
use eh::{Cli, Command, CommandFactory, Parser};
use error::Result;
use yansi::Paint;
mod commands;
@ -25,30 +26,11 @@ fn main() {
}
}
fn handle_command(command: &str, args: &[String]) -> error::Result<i32> {
let hash_extractor = util::RegexHashExtractor;
let fixer = util::DefaultNixFileFixer;
let classifier = util::DefaultNixErrorClassifier;
match command {
"update" => commands::update::handle_update(args),
"run" | "shell" | "build" => {
commands::handle_nix_command(
command,
args,
&hash_extractor,
&fixer,
&classifier,
)
},
_ => unreachable!(),
}
}
// Design partially taken from Stash
fn dispatch_multicall(
app_name: &str,
args: std::env::Args,
) -> Option<error::Result<i32>> {
) -> Option<Result<i32>> {
let rest: Vec<String> = args.collect();
let subcommand = match app_name {
@ -79,10 +61,31 @@ fn dispatch_multicall(
return Some(Ok(0));
}
Some(handle_command(subcommand, &rest))
if subcommand == "update" {
return Some(commands::update::handle_update(&rest));
}
fn run_app() -> error::Result<i32> {
let hash_extractor = util::RegexHashExtractor;
let fixer = util::DefaultNixFileFixer;
let classifier = util::DefaultNixErrorClassifier;
Some(match subcommand {
"run" | "shell" | "build" => {
commands::handle_nix_command(
subcommand,
&rest,
&hash_extractor,
&fixer,
&classifier,
)
},
// subcommand is assigned from the match on app_name above;
// only "run"/"shell"/"build" are possible values.
_ => unreachable!(),
})
}
fn run_app() -> Result<i32> {
let mut args = env::args();
let bin = args.next().unwrap_or_else(|| "eh".to_string());
let app_name = Path::new(&bin)
@ -97,14 +100,42 @@ fn run_app() -> error::Result<i32> {
let cli = Cli::parse();
let hash_extractor = util::RegexHashExtractor;
let fixer = util::DefaultNixFileFixer;
let classifier = util::DefaultNixErrorClassifier;
match cli.command {
Some(Command::Run { args }) => handle_command("run", &args),
Some(Command::Run { args }) => {
commands::handle_nix_command(
"run",
&args,
&hash_extractor,
&fixer,
&classifier,
)
},
Some(Command::Shell { args }) => handle_command("shell", &args),
Some(Command::Shell { args }) => {
commands::handle_nix_command(
"shell",
&args,
&hash_extractor,
&fixer,
&classifier,
)
},
Some(Command::Build { args }) => handle_command("build", &args),
Some(Command::Build { args }) => {
commands::handle_nix_command(
"build",
&args,
&hash_extractor,
&fixer,
&classifier,
)
},
Some(Command::Update { args }) => handle_command("update", &args),
Some(Command::Update { args }) => commands::update::handle_update(&args),
None => {
Cli::command().print_help()?;