pub mod analyze;
pub mod count;
pub mod schema;
#[cfg(feature = "database")]
pub mod database;
use clap::Subcommand;
use std::path::{Path, PathBuf};
pub fn is_json_file(path: &Path) -> bool {
if let Some(extension) = path.extension() {
matches!(extension.to_str(), Some("json") | Some("jsonl"))
} else {
false
}
}
pub fn is_parquet_file(path: &Path) -> bool {
if let Some(extension) = path.extension() {
matches!(extension.to_str(), Some("parquet"))
} else {
false
}
}
#[derive(Debug, Subcommand)]
pub enum Command {
Analyze(analyze::AnalyzeArgs),
Schema(schema::SchemaArgs),
Count(count::CountArgs),
#[cfg(feature = "database")]
Database(database::DatabaseArgs),
}
#[derive(Debug, clap::Args)]
pub struct CommonAnalysisOptions {
#[arg(long)]
pub progress: bool,
#[arg(long)]
pub chunk_size: Option<usize>,
#[arg(long)]
pub config: Option<PathBuf>,
#[arg(short = 'v', long = "verbose", action = clap::ArgAction::Count)]
pub verbosity: u8,
}
#[derive(Debug, clap::Args)]
pub struct CommonOptions {
#[arg(long, value_enum, default_value = "text")]
pub format: crate::cli::args::CliOutputFormat,
#[arg(short, long)]
pub output: Option<PathBuf>,
#[arg(short = 'v', long, action = clap::ArgAction::Count)]
pub verbosity: u8,
#[arg(long)]
pub no_color: bool,
}