@@ -201,6 +201,12 @@ pub fn parser(pre_flight_settings: PreFlightSettings) -> Command {
201
201
. infer_long_args ( pre_flight_settings. infer_long_options )
202
202
. subcommand_value_name ( "queue" )
203
203
. subcommands ( purge_subcommands ( pre_flight_settings. clone ( ) ) ) ;
204
+ let queues_group = Command :: new ( "queues" )
205
+ . about ( "Operations on queues" )
206
+ . infer_subcommands ( pre_flight_settings. infer_subcommands )
207
+ . infer_long_args ( pre_flight_settings. infer_long_options )
208
+ . subcommand_value_name ( "queue" )
209
+ . subcommands ( queues_subcommands ( pre_flight_settings. clone ( ) ) ) ;
204
210
let rebalance_group = Command :: new ( "rebalance" )
205
211
. about ( "Rebalancing of leader replicas" )
206
212
. infer_subcommands ( pre_flight_settings. infer_subcommands )
@@ -275,6 +281,7 @@ pub fn parser(pre_flight_settings: PreFlightSettings) -> Command {
275
281
policies_group,
276
282
publish_group,
277
283
purge_group,
284
+ queues_group,
278
285
rebalance_group,
279
286
show_group,
280
287
shovels_group,
@@ -1227,6 +1234,78 @@ fn purge_subcommands(pre_flight_settings: PreFlightSettings) -> [Command; 1] {
1227
1234
[ queue_cmd] . map ( |cmd| cmd. infer_long_args ( pre_flight_settings. infer_long_options ) )
1228
1235
}
1229
1236
1237
+ fn queues_subcommands ( pre_flight_settings : PreFlightSettings ) -> [ Command ; 5 ] {
1238
+ let declare_cmd = Command :: new ( "declare" )
1239
+ . about ( "Declares a queue or a stream" )
1240
+ . after_help ( color_print:: cformat!(
1241
+ "<bold>Doc guide:</bold>: {}" ,
1242
+ QUEUE_GUIDE_URL
1243
+ ) )
1244
+ . arg ( Arg :: new ( "name" ) . long ( "name" ) . required ( true ) . help ( "name" ) )
1245
+ . arg (
1246
+ Arg :: new ( "type" )
1247
+ . long ( "type" )
1248
+ . help ( "queue type" )
1249
+ . value_parser ( value_parser ! ( QueueType ) )
1250
+ . required ( false )
1251
+ . default_value ( "classic" ) ,
1252
+ )
1253
+ . arg (
1254
+ Arg :: new ( "durable" )
1255
+ . long ( "durable" )
1256
+ . help ( "should it persist after a restart" )
1257
+ . required ( false )
1258
+ . value_parser ( value_parser ! ( bool ) ) ,
1259
+ )
1260
+ . arg (
1261
+ Arg :: new ( "auto_delete" )
1262
+ . long ( "auto-delete" )
1263
+ . help ( "should it be deleted when the last consumer disconnects" )
1264
+ . required ( false )
1265
+ . value_parser ( value_parser ! ( bool ) ) ,
1266
+ )
1267
+ . arg (
1268
+ Arg :: new ( "arguments" )
1269
+ . long ( "arguments" )
1270
+ . help ( "additional exchange arguments" )
1271
+ . required ( false )
1272
+ . default_value ( "{}" )
1273
+ . value_parser ( value_parser ! ( String ) ) ,
1274
+ ) ;
1275
+ let idempotently_arg = Arg :: new ( "idempotently" )
1276
+ . long ( "idempotently" )
1277
+ . value_parser ( value_parser ! ( bool ) )
1278
+ . action ( ArgAction :: SetTrue )
1279
+ . help ( "do not consider 404 Not Found API responses to be errors" )
1280
+ . required ( false ) ;
1281
+ let delete_cmd = Command :: new ( "delete" )
1282
+ . about ( "Deletes a queue" )
1283
+ . arg (
1284
+ Arg :: new ( "name" )
1285
+ . long ( "name" )
1286
+ . help ( "queue name" )
1287
+ . required ( true ) ,
1288
+ )
1289
+ . arg ( idempotently_arg. clone ( ) ) ;
1290
+ let list_cmd = Command :: new ( "list" )
1291
+ . long_about ( "Lists queues and streams" )
1292
+ . after_help ( color_print:: cformat!(
1293
+ "<bold>Doc guide</bold>: {}" ,
1294
+ QUEUE_GUIDE_URL
1295
+ ) ) ;
1296
+ let purge_cmd = Command :: new ( "purge" )
1297
+ . long_about ( "Purges (permanently removes unacknowledged messages from) a queue" )
1298
+ . arg (
1299
+ Arg :: new ( "name" )
1300
+ . long ( "name" )
1301
+ . help ( "name of the queue to purge" )
1302
+ . required ( true ) ,
1303
+ ) ;
1304
+ let rebalance_cmd = Command :: new ( "rebalance" ) . about ( "Rebalances queue leaders" ) ;
1305
+ [ declare_cmd, delete_cmd, list_cmd, purge_cmd, rebalance_cmd]
1306
+ . map ( |cmd| cmd. infer_long_args ( pre_flight_settings. infer_long_options ) )
1307
+ }
1308
+
1230
1309
fn parameters_subcommands ( pre_flight_settings : PreFlightSettings ) -> [ Command ; 3 ] {
1231
1310
let list_cmd = Command :: new ( "list" )
1232
1311
. arg (
0 commit comments