Skip to content
use clap::{Parser, Subcommand};

#[derive(Parser)]
#[command(name = "pike", about = "Create GitHub issues from the CLI", version)]
pub struct Cli {
    #[command(subcommand)]
    pub command: Option<Commands>,
}

#[derive(Subcommand)]
pub enum Commands {
    /// Configure pike and pre-fetch repository/project data
    Setup,
}

#[cfg(test)]
mod tests {
    use super::*;
    use clap::Parser;

    #[test]
    fn parse_no_subcommand() {
        let cli = Cli::try_parse_from(vec!["pike"]);
        assert!(cli.is_ok());
        assert!(cli.unwrap().command.is_none());
    }

    #[test]
    fn parse_setup() {
        let cli = Cli::try_parse_from(vec!["pike", "setup"]);
        assert!(cli.is_ok());
        assert!(matches!(cli.unwrap().command, Some(Commands::Setup)));
    }

    #[test]
    fn parse_version() {
        let result = Cli::try_parse_from(vec!["pike", "--version"]);
        assert!(result.is_err());
    }
}