use anyhow::Result;
use clap::{Parser, Subcommand};
mod audio;
mod commands;
mod crypto;
mod format;
mod stego;
mod wav;
#[derive(Parser)]
#[command(name = "zimhide")]
#[command(about = "Zim Steganography Toolkit - embed and extract encrypted content in WAV files")]
#[command(version)]
pub struct Cli {
#[command(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
enum Commands {
Encode(commands::encode::EncodeArgs),
Decode(commands::decode::DecodeArgs),
Play(commands::play::PlayArgs),
Keygen(commands::keygen::KeygenArgs),
Inspect(commands::inspect::InspectArgs),
Completions(commands::completions::CompletionsArgs),
}
fn main() -> Result<()> {
let cli = Cli::parse();
match cli.command {
Commands::Encode(args) => commands::encode::run(args),
Commands::Decode(args) => commands::decode::run(args),
Commands::Play(args) => commands::play::run(args),
Commands::Keygen(args) => commands::keygen::run(args),
Commands::Inspect(args) => commands::inspect::run(args),
Commands::Completions(args) => {
commands::completions::run(args);
Ok(())
}
}
}