@@ -236,6 +236,12 @@ pub fn parser(pre_flight_settings: PreFlightSettings) -> Command {
236236 ) )
237237 . subcommand_value_name ( "shovels" )
238238 . subcommands ( shovel_subcommands ( pre_flight_settings. clone ( ) ) ) ;
239+ let streams_group = Command :: new ( "streams" )
240+ . about ( "Operations on streams" )
241+ . infer_subcommands ( pre_flight_settings. infer_subcommands )
242+ . infer_long_args ( pre_flight_settings. infer_long_options )
243+ . subcommand_value_name ( "stream" )
244+ . subcommands ( streams_subcommands ( pre_flight_settings. clone ( ) ) ) ;
239245 let tanzu_group = Command :: new ( "tanzu" )
240246 . about ( "Tanzu RabbitMQ-specific commands" )
241247 . infer_subcommands ( pre_flight_settings. infer_subcommands )
@@ -285,6 +291,7 @@ pub fn parser(pre_flight_settings: PreFlightSettings) -> Command {
285291 rebalance_group,
286292 show_group,
287293 shovels_group,
294+ streams_group,
288295 tanzu_group,
289296 users_group,
290297 vhosts_group,
@@ -1306,6 +1313,68 @@ fn queues_subcommands(pre_flight_settings: PreFlightSettings) -> [Command; 5] {
13061313 . map ( |cmd| cmd. infer_long_args ( pre_flight_settings. infer_long_options ) )
13071314}
13081315
1316+ fn streams_subcommands ( pre_flight_settings : PreFlightSettings ) -> [ Command ; 3 ] {
1317+ let declare_cmd = Command :: new ( "declare" )
1318+ . about ( "Declares a stream" )
1319+ . after_help ( color_print:: cformat!(
1320+ "<bold>Doc guide:</bold>: {}" ,
1321+ STREAM_GUIDE_URL
1322+ ) )
1323+ . arg ( Arg :: new ( "name" ) . long ( "name" ) . required ( true ) . help ( "name" ) )
1324+ . arg (
1325+ Arg :: new ( "expiration" )
1326+ . long ( "expiration" )
1327+ . help ( "stream expiration, e.g. 12h for 12 hours, 7D for 7 days, or 1M for 1 month" )
1328+ . required ( true )
1329+ . value_parser ( value_parser ! ( String ) ) ,
1330+ )
1331+ . arg (
1332+ Arg :: new ( "max_length_bytes" )
1333+ . long ( "max-length-bytes" )
1334+ . help ( "maximum stream length in bytes" )
1335+ . required ( false )
1336+ . value_parser ( value_parser ! ( u64 ) ) ,
1337+ )
1338+ . arg (
1339+ Arg :: new ( "max_segment_length_bytes" )
1340+ . long ( "stream-max-segment-size-bytes" )
1341+ . help ( "maximum stream segment file length in bytes" )
1342+ . required ( false )
1343+ . value_parser ( value_parser ! ( u64 ) ) ,
1344+ )
1345+ . arg (
1346+ Arg :: new ( "arguments" )
1347+ . long ( "arguments" )
1348+ . help ( "additional exchange arguments" )
1349+ . required ( false )
1350+ . default_value ( "{}" )
1351+ . value_parser ( value_parser ! ( String ) ) ,
1352+ ) ;
1353+ let idempotently_arg = Arg :: new ( "idempotently" )
1354+ . long ( "idempotently" )
1355+ . value_parser ( value_parser ! ( bool ) )
1356+ . action ( ArgAction :: SetTrue )
1357+ . help ( "do not consider 404 Not Found API responses to be errors" )
1358+ . required ( false ) ;
1359+ let delete_cmd = Command :: new ( "delete" )
1360+ . about ( "Deletes a queue" )
1361+ . arg (
1362+ Arg :: new ( "name" )
1363+ . long ( "name" )
1364+ . help ( "queue name" )
1365+ . required ( true ) ,
1366+ )
1367+ . arg ( idempotently_arg. clone ( ) ) ;
1368+ let list_cmd = Command :: new ( "list" )
1369+ . long_about ( "Lists streams and queues and" )
1370+ . after_help ( color_print:: cformat!(
1371+ "<bold>Doc guide</bold>: {}" ,
1372+ STREAM_GUIDE_URL
1373+ ) ) ;
1374+ [ declare_cmd, delete_cmd, list_cmd]
1375+ . map ( |cmd| cmd. infer_long_args ( pre_flight_settings. infer_long_options ) )
1376+ }
1377+
13091378fn parameters_subcommands ( pre_flight_settings : PreFlightSettings ) -> [ Command ; 3 ] {
13101379 let list_cmd = Command :: new ( "list" )
13111380 . arg (
0 commit comments