use clap::{Parser, Subcommand};
use crate::browsers::WebBrowser;
#[derive(Parser)]
#[command(name = "webapp-rs")]
#[command(about = "Create webapps with Firefox", long_about = None)]
#[command(version = "0.1.0")]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Subcommand)]
pub enum Commands {
Create {
#[arg(value_enum)]
browser: WebBrowser,
#[command(flatten)]
args: CreateArgs,
},
Edit {
#[arg(value_enum)]
browser: WebBrowser,
codename: String,
#[command(flatten)]
args: EditArgs,
},
List,
Delete {
#[arg(value_enum)]
browser: WebBrowser,
codename: String,
},
Run {
codename: String,
},
Update {
#[arg(value_enum)]
browser: WebBrowser,
},
}
#[derive(clap::Args)]
pub struct CreateArgs {
#[arg(long)]
pub name: String,
#[arg(long)]
pub url: String,
#[arg(long)]
pub icon: Option<String>,
#[arg(long, default_value = "Network")]
pub category: String,
#[arg(long)]
pub private_window: bool,
#[arg(long)]
pub custom_params: Option<String>,
#[arg(long)]
pub no_ublock: bool,
}
#[derive(clap::Args)]
pub struct EditArgs {
#[arg(long)]
pub name: Option<String>,
#[arg(long)]
pub url: Option<String>,
#[arg(long)]
pub icon: Option<String>,
#[arg(long)]
pub private_window: Option<bool>,
}