fix: parse product help before target resolution
This commit is contained in:
+52
-4
@@ -382,6 +382,14 @@ fn parse_args_slice_with_connection_resolver<R: CliConnectionResolver + ?Sized>(
|
|||||||
return Ok(Mode::WorkerRuntime(args[1..].to_vec()));
|
return Ok(Mode::WorkerRuntime(args[1..].to_vec()));
|
||||||
}
|
}
|
||||||
"objective" => {
|
"objective" => {
|
||||||
|
let cli = objective_cli::parse_objective_args(&args[1..])
|
||||||
|
.map_err(|e| ParseError(e.to_string()))?;
|
||||||
|
if cli == objective_cli::ObjectiveCli::Help {
|
||||||
|
return Ok(Mode::Objective {
|
||||||
|
cli,
|
||||||
|
target: client::ResolvedTarget::Standalone,
|
||||||
|
});
|
||||||
|
}
|
||||||
let workspace_root = current_dir()?;
|
let workspace_root = current_dir()?;
|
||||||
let target = resolve_tui_target(
|
let target = resolve_tui_target(
|
||||||
connection_resolver,
|
connection_resolver,
|
||||||
@@ -391,8 +399,6 @@ fn parse_args_slice_with_connection_resolver<R: CliConnectionResolver + ?Sized>(
|
|||||||
)?
|
)?
|
||||||
.resolve()
|
.resolve()
|
||||||
.map_err(|error| ParseError(error.to_string()))?;
|
.map_err(|error| ParseError(error.to_string()))?;
|
||||||
let cli = objective_cli::parse_objective_args(&args[1..])
|
|
||||||
.map_err(|e| ParseError(e.to_string()))?;
|
|
||||||
return Ok(Mode::Objective { cli, target });
|
return Ok(Mode::Objective { cli, target });
|
||||||
}
|
}
|
||||||
"session" => {
|
"session" => {
|
||||||
@@ -402,6 +408,14 @@ fn parse_args_slice_with_connection_resolver<R: CliConnectionResolver + ?Sized>(
|
|||||||
return Ok(Mode::Session(session_cli));
|
return Ok(Mode::Session(session_cli));
|
||||||
}
|
}
|
||||||
"ticket" => {
|
"ticket" => {
|
||||||
|
let cli =
|
||||||
|
ticket_cli::parse_ticket_args(&args[1..]).map_err(|e| ParseError(e.to_string()))?;
|
||||||
|
if cli == ticket_cli::TicketCli::Help {
|
||||||
|
return Ok(Mode::Ticket {
|
||||||
|
cli,
|
||||||
|
target: client::ResolvedTarget::Standalone,
|
||||||
|
});
|
||||||
|
}
|
||||||
let workspace_root = current_dir()?;
|
let workspace_root = current_dir()?;
|
||||||
let target = resolve_tui_target(
|
let target = resolve_tui_target(
|
||||||
connection_resolver,
|
connection_resolver,
|
||||||
@@ -411,8 +425,6 @@ fn parse_args_slice_with_connection_resolver<R: CliConnectionResolver + ?Sized>(
|
|||||||
)?
|
)?
|
||||||
.resolve()
|
.resolve()
|
||||||
.map_err(|error| ParseError(error.to_string()))?;
|
.map_err(|error| ParseError(error.to_string()))?;
|
||||||
let cli =
|
|
||||||
ticket_cli::parse_ticket_args(&args[1..]).map_err(|e| ParseError(e.to_string()))?;
|
|
||||||
return Ok(Mode::Ticket { cli, target });
|
return Ok(Mode::Ticket { cli, target });
|
||||||
}
|
}
|
||||||
"plugin" => {
|
"plugin" => {
|
||||||
@@ -2449,6 +2461,42 @@ backend = "shared"
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parser_resolves_ticket_help_before_backend_target_authority() {
|
||||||
|
match parse_args_from([
|
||||||
|
"--backend",
|
||||||
|
"http://unconfigured-backend.example",
|
||||||
|
"ticket",
|
||||||
|
"--help",
|
||||||
|
])
|
||||||
|
.unwrap()
|
||||||
|
{
|
||||||
|
Mode::Ticket {
|
||||||
|
cli: ticket_cli::TicketCli::Help,
|
||||||
|
target: client::ResolvedTarget::Standalone,
|
||||||
|
} => {}
|
||||||
|
other => panic!("expected target-independent Ticket help, got {other:?}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parser_resolves_objective_help_before_backend_target_authority() {
|
||||||
|
match parse_args_from([
|
||||||
|
"--backend",
|
||||||
|
"http://unconfigured-backend.example",
|
||||||
|
"objective",
|
||||||
|
"--help",
|
||||||
|
])
|
||||||
|
.unwrap()
|
||||||
|
{
|
||||||
|
Mode::Objective {
|
||||||
|
cli: objective_cli::ObjectiveCli::Help,
|
||||||
|
target: client::ResolvedTarget::Standalone,
|
||||||
|
} => {}
|
||||||
|
other => panic!("expected target-independent Objective help, got {other:?}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn parse_ticket_help_uses_ticket_mode() {
|
fn parse_ticket_help_uses_ticket_mode() {
|
||||||
match parse_args_from(["ticket", "--help"]).unwrap() {
|
match parse_args_from(["ticket", "--help"]).unwrap() {
|
||||||
|
|||||||
Reference in New Issue
Block a user