@@ -201,6 +201,12 @@ pub fn parser(pre_flight_settings: PreFlightSettings) -> Command {
201201 . infer_long_args ( pre_flight_settings. infer_long_options )
202202 . subcommand_value_name ( "queue" )
203203 . 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 ( ) ) ) ;
204210 let rebalance_group = Command :: new ( "rebalance" )
205211 . about ( "Rebalancing of leader replicas" )
206212 . infer_subcommands ( pre_flight_settings. infer_subcommands )
@@ -275,6 +281,7 @@ pub fn parser(pre_flight_settings: PreFlightSettings) -> Command {
275281 policies_group,
276282 publish_group,
277283 purge_group,
284+ queues_group,
278285 rebalance_group,
279286 show_group,
280287 shovels_group,
@@ -1227,6 +1234,78 @@ fn purge_subcommands(pre_flight_settings: PreFlightSettings) -> [Command; 1] {
12271234 [ queue_cmd] . map ( |cmd| cmd. infer_long_args ( pre_flight_settings. infer_long_options ) )
12281235}
12291236
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+
12301309fn parameters_subcommands ( pre_flight_settings : PreFlightSettings ) -> [ Command ; 3 ] {
12311310 let list_cmd = Command :: new ( "list" )
12321311 . arg (
0 commit comments