use std::path::PathBuf;
use clap::Parser;
#[derive(Clone, Debug, Parser)]
#[command(
name = "ducklake-cli",
version,
about = "Run SQL against a DuckLake-aware Apache DataFusion session."
)]
pub struct Cli {
#[arg(long = "init", value_name = "FILE")]
pub init: Vec<PathBuf>,
#[arg(
short = 'e',
long = "execute",
value_name = "SQL",
conflicts_with = "file"
)]
pub execute: Vec<String>,
#[arg(
short = 'f',
long = "file",
value_name = "FILE",
conflicts_with = "execute"
)]
pub file: Option<PathBuf>,
#[arg(long = "continue-on-error")]
pub continue_on_error: bool,
#[arg(short = 'q', long = "quiet")]
pub quiet: bool,
#[arg(long = "timing")]
pub timing: bool,
#[arg(long = "no-history")]
pub no_history: bool,
#[arg(long = "history-file", value_name = "FILE")]
pub history_file: Option<PathBuf>,
#[arg(long = "object-store-url", value_name = "URL")]
pub object_store_url: Vec<String>,
#[arg(long = "object-store-config", value_name = "KEY=VALUE")]
pub object_store_config: Vec<String>,
#[arg(long = "object-store-local-path", value_name = "PATH")]
pub object_store_local_path: Option<PathBuf>,
#[arg(long = "s3-endpoint", value_name = "URL")]
pub s3_endpoint: Option<String>,
#[arg(long = "s3-access-key-id", value_name = "ID")]
pub s3_access_key_id: Option<String>,
#[arg(long = "s3-secret-access-key", value_name = "SECRET")]
pub s3_secret_access_key: Option<String>,
#[arg(long = "s3-session-token", value_name = "TOKEN")]
pub s3_session_token: Option<String>,
#[arg(long = "s3-region", value_name = "REGION")]
pub s3_region: Option<String>,
#[arg(long = "s3-allow-http", value_name = "BOOL")]
pub s3_allow_http: Option<bool>,
#[arg(long = "s3-path-style")]
pub s3_path_style: bool,
}