s3util-rs 0.2.0

S3 utility commands (cp, mv, rm, etc.)
Documentation
use anyhow::Result;
use tracing::info;

use s3util_rs::config::ClientConfig;
use s3util_rs::config::args::rm::RmArgs;
use s3util_rs::storage::s3::api;

/// Runtime entry for `s3util rm s3://<BUCKET>/<KEY>`.
///
/// Builds the SDK client from `client_config`, issues `DeleteObject`,
/// and returns `Ok(())` on success (silent — no output).
pub async fn run_rm(args: RmArgs, client_config: ClientConfig) -> Result<()> {
    let (bucket, key) = args
        .bucket_key()
        .map_err(|e| anyhow::anyhow!("{}", e.trim_end()))?;

    let client = client_config.create_client().await;

    api::delete_object(&client, &bucket, &key, args.source_version_id.as_deref()).await?;
    info!(
        bucket = %bucket,
        key = %key,
        version_id = %args.source_version_id.as_deref().unwrap_or_default(),
        "Object deleted."
    );
    Ok(())
}