From 1a0fde95fc2403041f9f477f4220618ee916853b Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Wed, 24 Apr 2024 20:10:19 +0200 Subject: args: Argument parser Still getting used to rust --- src/args.rs | 305 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 305 insertions(+) create mode 100644 src/args.rs (limited to 'src/args.rs') diff --git a/src/args.rs b/src/args.rs new file mode 100644 index 0000000..3cd9d8a --- /dev/null +++ b/src/args.rs @@ -0,0 +1,305 @@ +use derive_builder::Builder; +use std::collections::HashMap; + +#[allow(dead_code)] +pub enum ValueRequirement { + None, + Required(&'static str), + Optional(&'static str), +} + +#[derive(Builder)] +#[builder(pattern = "owned")] +pub struct Option { + #[builder(setter(into), default = "'\\0'")] + short: char, + long: &'static str, + #[builder(setter(into), default = "\"\"")] + description: &'static str, + #[builder(setter(name = "value"), default = "ValueRequirement::None")] + value_req: ValueRequirement, + #[builder(setter(skip))] + is_set: bool, + #[builder(setter(skip))] + value: std::option::Option, +} + +pub struct Options { + options: Vec