mirror of
				https://github.com/pcvolkmer/osc-variant.git
				synced 2025-10-30 07:56:12 +00:00 
			
		
		
		
	Extract cli command structs
This commit is contained in:
		
							
								
								
									
										47
									
								
								src/cli.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/cli.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | |||||||
|  | /* | ||||||
|  |  * MIT License | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2023 Comprehensive Cancer Center Mainfranken | ||||||
|  |  * | ||||||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |  * of this software and associated documentation files (the "Software"), to deal | ||||||
|  |  * in the Software without restriction, including without limitation the rights | ||||||
|  |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |  * copies of the Software, and to permit persons to whom the Software is | ||||||
|  |  * furnished to do so, subject to the following conditions: | ||||||
|  |  * | ||||||
|  |  * The above copyright notice and this permission notice shall be included in all | ||||||
|  |  * copies or substantial portions of the Software. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  |  * SOFTWARE. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | use clap::{Parser, Subcommand}; | ||||||
|  |  | ||||||
|  | #[derive(Parser)] | ||||||
|  | #[command(author, version, about, long_about = None)] | ||||||
|  | #[command(propagate_version = true, arg_required_else_help(true))] | ||||||
|  | pub struct Cli { | ||||||
|  |     #[command(subcommand)] | ||||||
|  |     pub command: Command, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #[derive(Subcommand)] | ||||||
|  | pub enum Command { | ||||||
|  |     #[command(about = "Zeigt alle enthaltenen Kataloge und Formulare mit Revision an.")] | ||||||
|  |     List { inputfile: String }, | ||||||
|  |     #[command(about = "Modifiziert die angegebene Datei anhand der Profildatei")] | ||||||
|  |     Modify { | ||||||
|  |         inputfile: String, | ||||||
|  |         #[arg(long = "profile", help = "Profildatei (Optional)")] | ||||||
|  |         profile: Option<String>, | ||||||
|  |         #[arg(long = "output", help = "Ausgabedatei (Optional)")] | ||||||
|  |         outputfile: Option<String>, | ||||||
|  |     }, | ||||||
|  | } | ||||||
							
								
								
									
										26
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								src/main.rs
									
									
									
									
									
								
							| @@ -22,13 +22,14 @@ | |||||||
|  * SOFTWARE. |  * SOFTWARE. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | use clap::Parser; | ||||||
| use std::fs; | use std::fs; | ||||||
| use std::fs::OpenOptions; | use std::fs::OpenOptions; | ||||||
| use std::io::Write; | use std::io::Write; | ||||||
| use std::ops::Add; | use std::ops::Add; | ||||||
| use std::str::FromStr; | use std::str::FromStr; | ||||||
|  |  | ||||||
| use clap::{Parser, Subcommand}; | use crate::cli::{Cli, Command}; | ||||||
| use quick_xml::de::from_str; | use quick_xml::de::from_str; | ||||||
| use quick_xml::se::Serializer; | use quick_xml::se::Serializer; | ||||||
| use serde::Serialize; | use serde::Serialize; | ||||||
| @@ -36,31 +37,10 @@ use serde::Serialize; | |||||||
| use crate::model::onkostar_editor::OnkostarEditor; | use crate::model::onkostar_editor::OnkostarEditor; | ||||||
| use crate::profile::Profile; | use crate::profile::Profile; | ||||||
|  |  | ||||||
|  | mod cli; | ||||||
| mod model; | mod model; | ||||||
| mod profile; | mod profile; | ||||||
|  |  | ||||||
| #[derive(Parser)] |  | ||||||
| #[command(author, version, about, long_about = None)] |  | ||||||
| #[command(propagate_version = true, arg_required_else_help(true))] |  | ||||||
| struct Cli { |  | ||||||
|     #[command(subcommand)] |  | ||||||
|     command: Command, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| #[derive(Subcommand)] |  | ||||||
| enum Command { |  | ||||||
|     #[command(about = "Zeigt alle enthaltenen Kataloge und Formulare mit Revision an.")] |  | ||||||
|     List { inputfile: String }, |  | ||||||
|     #[command(about = "Modifiziert die angegebene Datei anhand der Profildatei")] |  | ||||||
|     Modify { |  | ||||||
|         inputfile: String, |  | ||||||
|         #[arg(long = "profile", help = "Profildatei (Optional)")] |  | ||||||
|         profile: Option<String>, |  | ||||||
|         #[arg(long = "output", help = "Ausgabedatei (Optional)")] |  | ||||||
|         outputfile: Option<String>, |  | ||||||
|     }, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| fn main() { | fn main() { | ||||||
|     let cli = Cli::parse(); |     let cli = Cli::parse(); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user