use camino::Utf8PathBuf;
use clap::{ArgAction, Args, Parser, Subcommand};
pub mod prompts;
#[derive(Parser)]
#[command(version, about, long_about = None)]
#[command(propagate_version = true)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Subcommand)]
pub enum Commands {
Create(CreateArgs),
Remove { file: Utf8PathBuf },
Cache { file: Utf8PathBuf },
Validate { file: Utf8PathBuf },
}
#[derive(Args, Clone, Default)]
pub struct CreateArgs {
#[arg(short, long, action=ArgAction::SetTrue)]
pub non_interactive: bool,
#[arg(short, long)]
pub directory: Option<Utf8PathBuf>,
#[arg(short, long)]
pub title: Option<String>,
#[arg(short, long, value_parser, num_args = 1..)]
pub categories: Vec<String>,
#[arg(short, long, value_parser, num_args = 1..)]
pub languages: Vec<String>,
#[arg(short, long)]
pub preferred_ide: Option<String>,
#[arg(short, long, value_parser, num_args = 1..)]
pub build_systems: Vec<String>,
#[arg(short = 'D', long)]
pub description: Option<String>,
#[arg(short, long)]
pub repository_url: Option<String>,
}
#[cfg(test)]
pub mod tests {
pub fn skip_if_stdout() {
if atty::is(atty::Stream::Stdout) {
eprintln!("Skipping test with stdout when not using nextest...");
panic!("IO error: not a terminal");
}
}
}