From 42dac85bf7d71dce87fed842154e0bde03366e13 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Fri, 18 Oct 2024 10:57:07 -0500 Subject: [PATCH] Remove commands available in the top-level from the suggested subcommand error (#8316) Part of https://github.com/astral-sh/uv/issues/8313 I think we'll need to open an issue upstream to add more context to the error here, because there's not sufficient information about the parent command to provide a good error message. As a first step, let's avoid giving these suggestions for subcommands that overlap with our top-level commands.. because that's just confusing. Here's all the information we have here ```rust [crates/uv/src/lib.rs:1530:13] &err = ErrorInner { kind: InvalidSubcommand, context: FlatMap { keys: [ InvalidSubcommand, Usage, ], values: [ String( "remove", ), StyledStr( StyledStr( "\u{1b}[1m\u{1b}[32mUsage:\u{1b}[0m \u{1b}[1m\u{1b}[36muv python\u{1b}[0m \u{1b}[36m[OPTIONS]\u{1b}[0m \u{1b}[36m\u{1b}[0m", ), ), ], }, message: None, source: None, help_flag: Some( "--help", ), styles: Styles { header: Style { fg: Some( Ansi( Green, ), ), bg: None, underline: None, effects: Effects(BOLD), }, error: Style { fg: Some( Ansi( Red, ), ), bg: None, underline: None, effects: Effects(BOLD), }, usage: Style { fg: Some( Ansi( Green, ), ), bg: None, underline: None, effects: Effects(BOLD), }, literal: Style { fg: Some( Ansi( Cyan, ), ), bg: None, underline: None, effects: Effects(BOLD), }, placeholder: Style { fg: Some( Ansi( Cyan, ), ), bg: None, underline: None, effects: Effects(), }, valid: Style { fg: Some( Ansi( Green, ), ), bg: None, underline: None, effects: Effects(), }, invalid: Style { fg: Some( Ansi( Yellow, ), ), bg: None, underline: None, effects: Effects(), }, }, color_when: Auto, color_help_when: Auto, backtrace: None, } ``` --- crates/uv/src/lib.rs | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/crates/uv/src/lib.rs b/crates/uv/src/lib.rs index fe4aea36d..a3df6e6a9 100644 --- a/crates/uv/src/lib.rs +++ b/crates/uv/src/lib.rs @@ -1530,25 +1530,19 @@ where if let Some(ContextValue::String(subcommand)) = err.get(ContextKind::InvalidSubcommand) { match subcommand.as_str() { - "compile" | "lock" => { + "compile" => { err.insert( ContextKind::SuggestedSubcommand, ContextValue::String("uv pip compile".to_string()), ); } - "sync" => { - err.insert( - ContextKind::SuggestedSubcommand, - ContextValue::String("uv pip sync".to_string()), - ); - } - "install" | "add" => { + "install" => { err.insert( ContextKind::SuggestedSubcommand, ContextValue::String("uv pip install".to_string()), ); } - "uninstall" | "remove" => { + "uninstall" => { err.insert( ContextKind::SuggestedSubcommand, ContextValue::String("uv pip uninstall".to_string()), @@ -1572,12 +1566,6 @@ where ContextValue::String("uv pip show".to_string()), ); } - "tree" => { - err.insert( - ContextKind::SuggestedSubcommand, - ContextValue::String("uv pip tree".to_string()), - ); - } _ => {} } }