Add the match subcommand.
This commit is contained in:
		
							parent
							
								
									72eaa1da8b
								
							
						
					
					
						commit
						274973d09b
					
				|  | @ -51,6 +51,13 @@ pub enum MainSubcommand { | ||||||
|     #[arg(short, long, default_value = "bautils.log")] |     #[arg(short, long, default_value = "bautils.log")] | ||||||
|     file: String, |     file: String, | ||||||
|   }, |   }, | ||||||
|  | 
 | ||||||
|  |   /// The match subcommand.
 | ||||||
|  |   Match { | ||||||
|  |     /// The match subcommands.
 | ||||||
|  |     #[command(subcommand)] | ||||||
|  |     command: MatchSubcommand, | ||||||
|  |   }, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// The arguments subcommands.
 | /// The arguments subcommands.
 | ||||||
|  | @ -110,3 +117,20 @@ pub enum FileSubcommand { | ||||||
|     file: PathBuf, |     file: PathBuf, | ||||||
|   }, |   }, | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | /// The match subcommands.
 | ||||||
|  | #[derive(Debug, Subcommand)] | ||||||
|  | pub enum MatchSubcommand { | ||||||
|  |   /// Match a given string to a regular expression pattern, if the pattern
 | ||||||
|  |   /// matches the exit code will be 0, otherwise it will be 1. Regular
 | ||||||
|  |   /// expression parsing failures will intentionally cause a panic.
 | ||||||
|  |   Regex { | ||||||
|  |     /// The regular expression to match with.
 | ||||||
|  |     #[arg(short, long)] | ||||||
|  |     pattern: String, | ||||||
|  | 
 | ||||||
|  |     /// The string to test.
 | ||||||
|  |     #[arg()] | ||||||
|  |     string: String, | ||||||
|  |   }, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ use { | ||||||
|   crate::{ |   crate::{ | ||||||
|     cli::{ |     cli::{ | ||||||
|       ArgumentsSubcommand, Cli, DirectorySubcommand, FileSubcommand, |       ArgumentsSubcommand, Cli, DirectorySubcommand, FileSubcommand, | ||||||
|       MainSubcommand::*, Parser, |       MainSubcommand::*, MatchSubcommand, Parser, | ||||||
|     }, |     }, | ||||||
|     logging::append_line_to_file, |     logging::append_line_to_file, | ||||||
|   }, |   }, | ||||||
|  | @ -87,5 +87,16 @@ pub fn run() { | ||||||
|       println!("{}", log_line); |       println!("{}", log_line); | ||||||
|       append_line_to_file(&file, &log_line).unwrap(); |       append_line_to_file(&file, &log_line).unwrap(); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     Match { | ||||||
|  |       command: match_subcommand, | ||||||
|  |     } => match match_subcommand { | ||||||
|  |       MatchSubcommand::Regex { pattern, string } => { | ||||||
|  |         let regex = regex::RegexBuilder::new(&pattern).build().unwrap(); | ||||||
|  |         if !regex.is_match(&string) { | ||||||
|  |           std::process::exit(1); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue