use crate::types::notes::{EditMode, NoteTypes};
use chrono::{NaiveDate, NaiveTime};
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[clap(author, version, about)]
pub struct MonoCLI {
#[command(subcommand)]
pub command: Option<MonoCommands>,
#[clap(short, long, global = true)]
pub copy: bool,
}
#[derive(Subcommand)]
pub enum MonoCommands {
Add {
#[arg(value_name = "TEXT")]
text: Option<String>,
#[clap(short = 't', long = "type")]
note_type: Option<NoteTypes>,
#[clap(long)]
time: Option<NaiveTime>,
#[clap(long)]
date: Option<NaiveDate>,
#[clap(short, long)]
paste: bool,
},
List {
#[clap(short, long)]
limit: Option<u16>,
#[arg(short = 't', long = "type")]
note_type: Option<NoteTypes>,
#[clap(long)]
today: bool,
#[clap(short, long)]
since: Option<NaiveDate>,
#[clap(short, long)]
view: bool,
},
Search {
#[arg()]
text: String,
#[clap(short, long)]
limit: Option<u16>,
#[clap(short, long)]
note_type: Option<NoteTypes>,
#[clap(long)]
date: Option<NaiveDate>,
},
View {
#[arg()]
note_id: u32,
#[clap(short, long)]
no_format: bool,
},
Edit {
#[arg()]
note_id: u32,
#[clap(long)]
headless: bool,
#[arg(short = 'm', long = "mode")]
edit_mode: EditMode,
#[clap()]
text: String,
},
Delete {
#[arg()]
note_id: u32,
#[clap(short, long)]
approve: bool,
},
Stats {},
Export {},
Reminder {},
Init {},
}