diff --git a/crates/cli/src/commands/event.rs b/crates/cli/src/commands/event.rs index a0c9bb2..7a0d10c 100644 --- a/crates/cli/src/commands/event.rs +++ b/crates/cli/src/commands/event.rs @@ -22,6 +22,11 @@ Examples: rc event add local/my-bucket arn:aws:sns:us-east-1:123456789012:alerts --event delete rc bucket event add local/my-bucket arn:aws:lambda:us-east-1:123456789012:function:thumbnail --event put,delete"; +const EVENT_REMOVE_AFTER_HELP: &str = "\ +Examples: + rc bucket event remove local/my-bucket arn:aws:sqs:us-east-1:123456789012:jobs + rc event remove local/my-bucket arn:aws:sns:us-east-1:123456789012:alerts"; + /// Manage bucket event notifications #[derive(Args, Debug)] #[command(after_help = EVENT_AFTER_HELP)] @@ -71,6 +76,7 @@ pub struct AddArgs { } #[derive(Args, Debug)] +#[command(after_help = EVENT_REMOVE_AFTER_HELP)] pub struct RemoveArgs { /// Path to the bucket (alias/bucket) pub path: String, diff --git a/crates/cli/src/commands/mod.rs b/crates/cli/src/commands/mod.rs index 1c9532f..89155d1 100644 --- a/crates/cli/src/commands/mod.rs +++ b/crates/cli/src/commands/mod.rs @@ -472,4 +472,28 @@ mod tests { other => panic!("expected bucket command, got {:?}", other), } } + + #[test] + fn cli_accepts_bucket_event_remove_subcommand() { + let cli = Cli::try_parse_from([ + "rc", + "bucket", + "event", + "remove", + "local/my-bucket", + "arn:aws:sns:us-east-1:123456789012:alerts", + ]) + .expect("parse bucket event remove"); + + match cli.command { + Commands::Bucket(args) => match args.command { + bucket::BucketCommands::Event(event::EventCommands::Remove(arg)) => { + assert_eq!(arg.path, "local/my-bucket"); + assert_eq!(arg.arn, "arn:aws:sns:us-east-1:123456789012:alerts"); + } + other => panic!("expected bucket event remove command, got {:?}", other), + }, + other => panic!("expected bucket command, got {:?}", other), + } + } } diff --git a/crates/cli/tests/help_contract.rs b/crates/cli/tests/help_contract.rs index facf128..83f91b9 100644 --- a/crates/cli/tests/help_contract.rs +++ b/crates/cli/tests/help_contract.rs @@ -436,6 +436,15 @@ fn nested_subcommand_help_contract() { "rc bucket event add local/my-bucket arn:aws:sqs:us-east-1:123456789012:jobs --event put", ], }, + HelpCase { + args: &["bucket", "event", "remove"], + usage: "Usage: rc bucket event remove [OPTIONS] ", + expected_tokens: &[ + "--force", + "Examples:", + "rc event remove local/my-bucket arn:aws:sns:us-east-1:123456789012:alerts", + ], + }, HelpCase { args: &["object", "copy"], usage: "Usage: rc object copy [OPTIONS] ", @@ -733,6 +742,15 @@ fn nested_subcommand_help_contract() { "rc event add local/my-bucket arn:aws:sns:us-east-1:123456789012:alerts --event delete", ], }, + HelpCase { + args: &["event", "remove"], + usage: "Usage: rc event remove [OPTIONS] ", + expected_tokens: &[ + "--force", + "Examples:", + "rc event remove local/my-bucket arn:aws:sns:us-east-1:123456789012:alerts", + ], + }, HelpCase { args: &["replicate", "list"], usage: "Usage: rc replicate list [OPTIONS] ",