@@ -30,99 +30,61 @@ async fn main() -> Result<()> {
30
30
pretty_env_logger:: init ( ) ;
31
31
32
32
with_interactive_retry ( |retry : Option < Retry > | async {
33
- if let Err ( e ) = match Wac :: parse ( ) {
33
+ if let Err ( err ) = match Wac :: parse ( ) {
34
34
Wac :: Parse ( cmd) => cmd. exec ( ) . await ,
35
35
Wac :: Resolve ( cmd) => cmd. exec ( retry) . await ,
36
36
Wac :: Encode ( cmd) => cmd. exec ( retry) . await ,
37
37
} {
38
- match e {
39
- CommandError :: General ( e ) => {
40
- eprintln ! (
41
- "{error}: {e:?}" ,
42
- error = "error" . if_supports_color ( Stream :: Stderr , |text| {
43
- text . style ( Style :: new ( ) . red ( ) . bold ( ) )
44
- } )
38
+ if let CommandError :: WargHint ( ClientError :: PackageDoesNotExistWithHint { name , hint } ) = & err {
39
+ if let Some ( ( namespace , registry ) ) = hint . to_str ( ) . unwrap ( ) . split_once ( '=' ) {
40
+ let prompt = format ! (
41
+ "The package `{}`, does not exist in the registry you're using.
42
+ However, the package namespace `{namespace}` does exist in the registry at {registry}.
43
+ Would you like to configure your warg cli to use this registry for packages with this namespace in the future? y/N \n " ,
44
+ name . name ( ) ,
45
45
) ;
46
- std:: process:: exit ( 1 ) ;
47
- }
48
- CommandError :: Serde ( e) => {
49
- eprintln ! (
50
- "{error}: {e:?}" ,
51
- error = "error" . if_supports_color( Stream :: Stderr , |text| {
52
- text. style( Style :: new( ) . red( ) . bold( ) )
53
- } )
54
- ) ;
55
- std:: process:: exit ( 1 ) ;
56
- }
57
- CommandError :: Wac ( e) => {
58
- eprintln ! (
59
- "{error}: {e:?}" ,
60
- error = "error" . if_supports_color( Stream :: Stderr , |text| {
61
- text. style( Style :: new( ) . red( ) . bold( ) )
62
- } )
63
- ) ;
64
- std:: process:: exit ( 1 ) ;
65
- }
66
- CommandError :: WacResolution ( e) => {
67
- eprintln ! (
46
+ if Confirm :: with_theme ( & ColorfulTheme :: default ( ) )
47
+ . with_prompt ( prompt)
48
+ . interact ( )
49
+ . unwrap ( )
50
+ {
51
+ if let Err ( e) = match Wac :: parse ( ) {
52
+ Wac :: Parse ( cmd) => cmd. exec ( ) . await ,
53
+ Wac :: Resolve ( cmd) => {
54
+ cmd. exec ( Some ( Retry :: new (
55
+ namespace. to_string ( ) ,
56
+ registry. to_string ( ) ,
57
+ ) ) )
58
+ . await
59
+ } ,
60
+ Wac :: Encode ( cmd) => {
61
+ cmd. exec ( Some ( Retry :: new (
62
+ namespace. to_string ( ) ,
63
+ registry. to_string ( ) ,
64
+ ) ) )
65
+ . await
66
+ } ,
67
+ }
68
+ {
69
+ eprintln ! (
68
70
"{error}: {e:?}" ,
69
71
error = "error" . if_supports_color( Stream :: Stderr , |text| {
70
72
text. style( Style :: new( ) . red( ) . bold( ) )
71
73
} )
72
74
) ;
73
75
std:: process:: exit ( 1 ) ;
74
- } ,
75
- CommandError :: WargClient ( e) => {
76
- eprintln ! (
77
- "{error}: {e:?}" ,
78
- error = "error" . if_supports_color( Stream :: Stderr , |text| {
79
- text. style( Style :: new( ) . red( ) . bold( ) )
80
- } )
81
- ) ;
82
- std:: process:: exit ( 1 ) ;
83
- }
84
- CommandError :: WargHint ( e) => {
85
- if let ClientError :: PackageDoesNotExistWithHint { name, hint } = e {
86
- let hint_reg = hint. to_str ( ) . unwrap ( ) ;
87
- let mut terms = hint_reg. split ( '=' ) ;
88
- let namespace = terms. next ( ) ;
89
- let registry = terms. next ( ) ;
90
- if let ( Some ( namespace) , Some ( registry) ) = ( namespace, registry) {
91
- let prompt = format ! (
92
- "The package `{}`, does not exist in the registry you're using.\n However, the package namespace `{namespace}` does exist in the registry at {registry}.\n Would you like to configure your warg cli to use this registry for packages with this namespace in the future? y/N\n " ,
93
- name. name( )
94
- ) ;
95
- if Confirm :: with_theme ( & ColorfulTheme :: default ( ) )
96
- . with_prompt ( prompt)
97
- . interact ( )
98
- . unwrap ( )
99
- {
100
- if let Err ( e) = match Wac :: parse ( ) {
101
- Wac :: Parse ( cmd) => cmd. exec ( ) . await ,
102
- Wac :: Resolve ( cmd) => cmd. exec ( Some ( Retry :: new (
103
- namespace. to_string ( ) ,
104
- registry. to_string ( ) ,
105
- ) ) )
106
- . await ,
107
- Wac :: Encode ( cmd) => cmd. exec ( Some ( Retry :: new (
108
- namespace. to_string ( ) ,
109
- registry. to_string ( ) ,
110
- ) ) )
111
- . await
112
- } {
113
- eprintln ! (
114
- "{error}: {e:?}" ,
115
- error = "error" . if_supports_color( Stream :: Stderr , |text| {
116
- text. style( Style :: new( ) . red( ) . bold( ) )
117
- } )
118
- ) ;
119
- std:: process:: exit ( 1 ) ;
120
76
}
121
77
}
122
- }
123
- }
124
78
}
125
79
}
80
+
81
+ eprintln ! (
82
+ "{error}: {err:?}" ,
83
+ error = "error" . if_supports_color( Stream :: Stderr , |text| {
84
+ text. style( Style :: new( ) . red( ) . bold( ) )
85
+ } )
86
+ ) ;
87
+ std:: process:: exit ( 1 ) ;
126
88
}
127
89
Ok ( ( ) )
128
90
} )
0 commit comments