use std::path::PathBuf; use clap::{Parser, Subcommand, ValueEnum}; #[derive(Parser)] #[command(name = "olla", about = "Couteau suisse local : réseau, domotique, déploiement, et plus.")] pub struct Cli { #[command(subcommand)] pub command: Commands, } #[derive(Clone, Copy, ValueEnum)] pub enum Site { #[value(name = "dev.olla.fr")] DevOllaFr, } impl Site { pub fn build_dir(&self) -> &'static str { match self { Site::DevOllaFr => "build/dev.olla.fr", } } pub fn deploy_target(&self) -> &'static str { match self { Site::DevOllaFr => "dev.olla.fr:/var/www/dev.olla.fr/", } } } #[derive(Subcommand)] pub enum Commands { /// Navigation entre les bureaux bspwm #[command(subcommand)] Desktop(DesktopCommands), /// Lancer le mode développement (build + watch + serve) Dev { site: Site }, /// Déployer un site (build + rsync) Deploy { site: Site }, /// Analyser un export CSV d'index EDF et comparer les tarifs Edf { csv: PathBuf }, } #[derive(Subcommand)] pub enum DesktopCommands { /// Aller à gauche (Mail→Web, Code→Term) Left, /// Aller à droite (Web→Mail, Term→Code) Right, /// Aller en haut (Term→Web, Code→Mail) Up, /// Aller en bas (Web→Term, Mail→Code) Down, /// Basculer vers/depuis Others Others, }