use clap::{Parser, ValueEnum};
use std::path::PathBuf;
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
pub enum DocumentFormat {
#[value(name = "md", alias = "markdown")]
Markdown,
#[value(name = "tex", alias = "latex")]
Latex,
#[value(name = "txt", alias = "text")]
PlainText,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum, Default)]
pub enum Theme {
#[default]
#[value(name = "academic")]
Academic,
#[value(name = "github")]
Github,
#[value(name = "modern")]
Modern,
#[value(name = "dark")]
Dark,
}
#[derive(Parser, Debug)]
#[command(
name = "papr",
author = "Rishal",
version = "0.1.0",
about = "Lightning-fast CLI tool to compile Markdown, LaTeX, and Plain Text files into publication-grade PDFs.",
long_about = "papr compiles Markdown (.md), LaTeX (.tex), and Plain Text (.txt) documents into PDFs.\nRun 'papr' with no arguments to launch the interactive prompt, or pass a file directly."
)]
pub struct Cli {
#[arg(value_name = "INPUT")]
pub input: Option<PathBuf>,
#[arg(short, long, value_name = "OUTPUT")]
pub output: Option<PathBuf>,
#[arg(short, long, value_enum)]
pub format: Option<DocumentFormat>,
#[arg(short, long, value_enum, default_value_t = Theme::Academic)]
pub theme: Theme,
#[arg(long)]
pub open: bool,
}