From dc45b960a4eda299058e597f6867e4d4be109b1b Mon Sep 17 00:00:00 2001 From: lukeflo Date: Fri, 20 Sep 2024 22:31:33 +0200 Subject: initial commit --- src/backend/cliargs.rs | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/backend/cliargs.rs (limited to 'src/backend/cliargs.rs') diff --git a/src/backend/cliargs.rs b/src/backend/cliargs.rs new file mode 100644 index 0000000..b820b6a --- /dev/null +++ b/src/backend/cliargs.rs @@ -0,0 +1,89 @@ +use core::panic; +use std::path::{Path, PathBuf}; + +use sarge::prelude::*; + +sarge! { + // Name of the struct + ArgumentsCLI, + + // Show help and exit. + 'h' help: bool, + + // Show version and exit. TODO: Write version... + 'v' version: bool, + + // Option for file: -b - short option; --bibfile - long option + // #ok makes it optional + #ok 'b' bibfile: String, +} + +// struct for CLIArgs +pub struct CLIArgs { + pub helparg: bool, + pub versionarg: bool, +} + +impl CLIArgs { + pub fn parse_cli_args() -> Self { + let (cli_args, _) = ArgumentsCLI::parse().expect("Could not parse CLI arguments"); + Self { + helparg: cli_args.help, + versionarg: cli_args.version, + } + } +} + +// Struct for positional arguments +// TODO: Can surely be improved!! +pub struct PosArgs { + pub bibfilearg: PathBuf, +} + +impl PosArgs { + pub fn parse_pos_args() -> Self { + let (_, pos_args) = ArgumentsCLI::parse().expect("Could not parse positional arguments"); + Self { + bibfilearg: if pos_args.len() > 1 { + PathBuf::from(&pos_args[1]) + // pos_args[1].to_string() + } else { + panic!("No path to bibfile provided as argument") + }, // bibfilearg: pos_args[1].to_string(), + } + } +} + +pub fn help_func() -> String { + let help = format!( + "\ +{} {} + +USAGE: + bibiman [FLAGS] [file] + +POSITIONAL ARGS: + Path to .bib file + +FLAGS: + -h, --help Show this help and exit + -v, --version Show the version and exit", + env!("CARGO_PKG_NAME"), + env!("CARGO_PKG_VERSION"), + ); + help +} + +pub fn version_func() -> String { + let version = format!( + "\ +{} {} +{} +{}", + env!("CARGO_PKG_NAME"), + env!("CARGO_PKG_VERSION"), + env!("CARGO_PKG_AUTHORS"), + env!("CARGO_PKG_LICENSE") + ); + version +} -- cgit v1.2.3