tovuk 0.1.70

Deploy Rust workers, static frontends, and worker-static apps to Tovuk.
use super::super::constants::{DEFAULT_API_URL, DEFAULT_DEPLOY_WAIT_TIMEOUT_SECONDS};

#[derive(Clone, Debug)]
pub(crate) struct CliOptions {
    pub(crate) command: String,
    pub(crate) args: Vec<String>,
    pub(crate) api_url: String,
    pub(crate) service: String,
    pub(crate) build: String,
    pub(crate) deploy: String,
    pub(crate) limit: String,
    pub(crate) cursor: String,
    pub(crate) period: String,
    pub(crate) value: String,
    pub(crate) params: String,
    pub(crate) target: String,
    pub(crate) failing_command: String,
    pub(crate) first_log_line: String,
    pub(crate) token: String,
    pub(crate) template: String,
    pub(crate) severity: String,
    pub(crate) port: u16,
    pub(crate) deployment: DeploymentOptions,
    pub(crate) kv: KvOptions,
    pub(crate) queue: QueueOptions,
    pub(crate) storage: StorageOptions,
    pub(crate) output: OutputOptions,
}

#[derive(Clone, Debug)]
pub(crate) struct DeploymentOptions {
    pub(crate) database: bool,
    pub(crate) wait: bool,
    pub(crate) wait_timeout_seconds: u64,
}

#[derive(Clone, Debug)]
pub(crate) struct QueueOptions {
    pub(crate) max_retries: String,
    pub(crate) retention_seconds: String,
    pub(crate) max_batch_size: String,
    pub(crate) max_batch_timeout_seconds: String,
    pub(crate) dead_letter_queue: String,
    pub(crate) clear_dead_letter_queue: bool,
    pub(crate) delay_seconds: String,
}

#[derive(Clone, Debug)]
pub(crate) struct KvOptions {
    pub(crate) metadata: String,
    pub(crate) expiration: String,
    pub(crate) expiration_ttl_seconds: String,
}

#[derive(Clone, Debug)]
pub(crate) struct StorageOptions {
    pub(crate) content_type: String,
    pub(crate) public_read: bool,
}

#[derive(Clone, Debug)]
pub(crate) struct OutputOptions {
    pub(crate) json: bool,
    pub(crate) help: bool,
    pub(crate) version: bool,
}

impl Default for CliOptions {
    fn default() -> Self {
        Self {
            command: "help".to_owned(),
            args: Vec::new(),
            api_url: DEFAULT_API_URL.to_owned(),
            service: String::new(),
            build: String::new(),
            deploy: String::new(),
            limit: String::new(),
            cursor: String::new(),
            period: String::new(),
            value: String::new(),
            params: String::new(),
            target: String::new(),
            failing_command: String::new(),
            first_log_line: String::new(),
            token: String::new(),
            template: String::new(),
            severity: String::new(),
            port: 0,
            deployment: DeploymentOptions {
                database: false,
                wait: false,
                wait_timeout_seconds: DEFAULT_DEPLOY_WAIT_TIMEOUT_SECONDS,
            },
            kv: KvOptions {
                metadata: String::new(),
                expiration: String::new(),
                expiration_ttl_seconds: String::new(),
            },
            queue: QueueOptions {
                max_retries: String::new(),
                retention_seconds: String::new(),
                max_batch_size: String::new(),
                max_batch_timeout_seconds: String::new(),
                dead_letter_queue: String::new(),
                clear_dead_letter_queue: false,
                delay_seconds: String::new(),
            },
            storage: StorageOptions {
                content_type: String::new(),
                public_read: false,
            },
            output: OutputOptions {
                json: false,
                help: false,
                version: false,
            },
        }
    }
}