@@ -1111,50 +1111,53 @@ pub fn get_registry_candidates() -> CargoResult<Vec<clap_complete::CompletionCan
1111
1111
}
1112
1112
1113
1113
fn get_profile_candidates ( ) -> CargoResult < Vec < clap_complete:: CompletionCandidate > > {
1114
+ match get_workspace_profile_candidates ( ) {
1115
+ Ok ( candidates) if !candidates. is_empty ( ) => Ok ( candidates) ,
1116
+ // fallback to default profile candidates
1117
+ _ => Ok ( default_profile_candidates ( ) ) ,
1118
+ }
1119
+ }
1120
+
1121
+ fn get_workspace_profile_candidates ( ) -> CargoResult < Vec < clap_complete:: CompletionCandidate > > {
1114
1122
let gctx = new_gctx_for_completions ( ) ?;
1115
- if let Ok ( ws) = Workspace :: new ( & find_root_manifest_for_wd ( gctx. cwd ( ) ) ?, & gctx) {
1116
- if let Ok ( profiles) = Profiles :: new ( & ws, InternedString :: new ( "dev" ) ) {
1117
- let mut candidates = Vec :: new ( ) ;
1118
-
1119
- for name in profiles. profile_names ( ) {
1120
- if let Ok ( profile_instance) = Profiles :: new ( & ws, name) {
1121
- let base_profile = profile_instance. base_profile ( ) ;
1122
-
1123
- let mut description = String :: from ( if base_profile. opt_level . as_str ( ) == "0" {
1124
- "unoptimized"
1125
- } else {
1126
- "optimized"
1127
- } ) ;
1128
-
1129
- if base_profile. debuginfo . is_turned_on ( ) {
1130
- description. push_str ( " + debuginfo" ) ;
1131
- }
1123
+ let ws = Workspace :: new ( & find_root_manifest_for_wd ( gctx. cwd ( ) ) ?, & gctx) ?;
1124
+ let profiles = Profiles :: new ( & ws, InternedString :: new ( "dev" ) ) ?;
1132
1125
1133
- if matches ! ( name. as_str( ) , "test" | "bench" ) {
1134
- description. push_str ( " with tests enabled" ) ;
1135
- }
1126
+ let mut candidates = Vec :: new ( ) ;
1127
+ for name in profiles. profile_names ( ) {
1128
+ if let Ok ( profile_instance) = Profiles :: new ( & ws, name) {
1129
+ let base_profile = profile_instance. base_profile ( ) ;
1136
1130
1137
- candidates. push (
1138
- clap_complete:: CompletionCandidate :: new ( name. to_string ( ) )
1139
- . help ( Some ( description. into ( ) ) ) ,
1140
- ) ;
1141
- }
1131
+ let mut description = String :: from ( if base_profile. opt_level . as_str ( ) == "0" {
1132
+ "unoptimized"
1133
+ } else {
1134
+ "optimized"
1135
+ } ) ;
1136
+
1137
+ if base_profile. debuginfo . is_turned_on ( ) {
1138
+ description. push_str ( " + debuginfo" ) ;
1142
1139
}
1143
1140
1144
- return Ok ( candidates) ;
1141
+ candidates. push (
1142
+ clap_complete:: CompletionCandidate :: new ( name. to_string ( ) )
1143
+ . help ( Some ( description. into ( ) ) ) ,
1144
+ ) ;
1145
1145
}
1146
1146
}
1147
1147
1148
- Ok ( vec ! [
1148
+ Ok ( candidates)
1149
+ }
1150
+
1151
+ fn default_profile_candidates ( ) -> Vec < clap_complete:: CompletionCandidate > {
1152
+ vec ! [
1149
1153
clap_complete:: CompletionCandidate :: new( "dev" . to_string( ) )
1150
1154
. help( Some ( "unoptimized + debuginfo" . into( ) ) ) ,
1151
1155
clap_complete:: CompletionCandidate :: new( "release" . to_string( ) )
1152
1156
. help( Some ( "optimized" . into( ) ) ) ,
1153
1157
clap_complete:: CompletionCandidate :: new( "test" . to_string( ) )
1154
- . help( Some ( "unoptimized + debuginfo with tests enabled" . into( ) ) ) ,
1155
- clap_complete:: CompletionCandidate :: new( "bench" . to_string( ) )
1156
- . help( Some ( "optimized with tests enabled" . into( ) ) ) ,
1157
- ] )
1158
+ . help( Some ( "unoptimized + debuginfo" . into( ) ) ) ,
1159
+ clap_complete:: CompletionCandidate :: new( "bench" . to_string( ) ) . help( Some ( "optimized" . into( ) ) ) ,
1160
+ ]
1158
1161
}
1159
1162
1160
1163
fn get_example_candidates ( ) -> Vec < clap_complete:: CompletionCandidate > {
0 commit comments