use clap::{Parser, Subcommand};
use std::fs;
use std::path::PathBuf;
#[derive(Parser)]
#[command(
name = "sheeter",
version,
about = "Convert data files between formats"
)]
struct Cli {
#[command(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
enum Commands {
CsvToJson {
input: PathBuf,
output: PathBuf,
},
JsonToCsv {
input: PathBuf,
output: PathBuf,
},
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let cli = Cli::parse();
match cli.command {
Commands::CsvToJson { input, output } => {
let csv = fs::read_to_string(input)?;
let json = sheeter_engine::csv_to_json(&csv)?;
fs::write(output, json)?;
}
Commands::JsonToCsv { input, output } => {
let json = fs::read_to_string(input)?;
let csv = sheeter_engine::json_to_csv(&json)?;
fs::write(output, csv)?;
}
}
Ok(())
}