codocia 0.1.0

Detect documentation drift between Markdown docs and fast-moving code.
Documentation
use anyhow::Result;
use clap::{Parser, Subcommand};
use codocia::{CheckConfig, SnapshotConfig, check, init, skill_prompt, snapshot};
use std::path::PathBuf;

#[derive(Debug, Parser)]
#[command(name = "codocia")]
#[command(about = "Keep Markdown docs synchronized with fast-moving code.")]
struct Cli {
    #[command(subcommand)]
    command: Option<Command>,
}

#[derive(Debug, Subcommand)]
enum Command {
    Init {
        #[arg(long, default_value = ".")]
        path: PathBuf,
    },
    Snapshot {
        #[arg(long, default_value = ".")]
        workspace: PathBuf,
        #[arg(long, default_value = "docs")]
        docs: PathBuf,
    },
    Check {
        #[arg(long, default_value = ".")]
        workspace: PathBuf,
        #[arg(long, default_value = "docs")]
        docs: PathBuf,
        #[arg(long)]
        base: Option<String>,
    },
    Skill,
}

fn main() -> Result<()> {
    let cli = Cli::parse();
    match cli.command {
        None | Some(Command::Skill) => {
            print!("{}", skill_prompt());
            Ok(())
        }
        Some(Command::Init { path }) => init(path),
        Some(Command::Snapshot { workspace, docs }) => {
            snapshot(&SnapshotConfig { workspace, docs })
        }
        Some(Command::Check {
            workspace,
            docs,
            base,
        }) => check(&CheckConfig {
            workspace,
            docs,
            base,
        }),
    }
}