validate_backend

Macro validate_backend 

Source
macro_rules! validate_backend {
    (
        enable: $enable:expr,
        name: $backend_name:expr,
        required: [ $( ($field:expr, $field_name:expr) ),* $(,)? ]
        $(, custom_validator: $custom_validator:expr)?
    ) => { ... };
}
Expand description

Macro for declarative backend validation.

§Validation Rules

For each storage backend (S3, OSS, GCS, Azblob), this function validates: When backend is enabled (e.g., --s3): All required fields must be non-empty

Note: When backend is disabled, clap’s requires attribute ensures no configuration fields can be provided at parse time.

§Syntax

validate_backend!(
    enable: self.enable_s3,
    name: "S3",
    required: [(field1, "name1"), (field2, "name2"), ...],
    custom_validator: |missing| { ... }  // optional
)

§Arguments

  • enable: Boolean expression indicating if backend is enabled
  • name: Human-readable backend name for error messages
  • required: Array of (field_ref, field_name) tuples for required fields
  • custom_validator: Optional closure for complex validation logic

§Example

validate_backend!(
    enable: self.enable_s3,
    name: "S3",
    required: [
        (&self.s3.s3_bucket, "bucket"),
        (&self.s3.s3_access_key_id, "access key ID"),
    ]
)