use clap::{Parser, Subcommand, ValueEnum};
#[derive(Parser, Debug, Clone)]
#[command(
name = "nibb",
about = "A simple and easy snippet engine. Written in Rust.",
author = "konni332",
version = "0.5.0",
)]
pub struct Arguments {
#[clap(subcommand)]
pub command: NibbCommand,
}
#[derive(Subcommand, Debug, Clone)]
pub enum NibbCommand {
New {
name: String,
#[clap(short, long)]
description: Option<String>,
#[clap(short, long)]
content: Option<String>,
#[clap(short, long)]
language: Option<String>,
#[clap(short, long, value_delimiter = ',')]
tags: Vec<String>,
#[clap(short, long)]
public: bool,
},
List {
#[clap(short, long)]
filter: Option<String>,
#[clap(short, long)]
json: bool,
},
Delete {
name: String,
},
Edit {
name: String,
#[clap(value_enum)]
key: SnippetKey,
value: String,
},
}
#[derive(Debug, Clone, Copy, ValueEnum)]
pub enum SnippetKey {
Name,
Description,
Content,
Language,
Tags,
Visibility,
}