summaryrefslogtreecommitdiff
path: root/src/app/init.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/init.rs')
-rw-r--r--src/app/init.rs108
1 files changed, 0 insertions, 108 deletions
diff --git a/src/app/init.rs b/src/app/init.rs
deleted file mode 100644
index 3375d09..0000000
--- a/src/app/init.rs
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- Copyright 2023 Gabriel Bjørnager Jensen.
-
- This file is part of AAS.
-
- AAS is free software: you can redistribute it
- and/or modify it under the terms of the GNU
- General Public License as published by the Free
- Software Foundation, either version 3 of the
- License, or (at your option) any later version.
-
- AAS is distributed in the hope that it will
- be useful, but WITHOUT ANY WARRANTY; without
- even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU
- General Public License along with AAS. If not,
- see <https://www.gnu.org/licenses/>.
-*/
-
-use crate::app::App;
-use crate::cpu::Cpu;
-use crate::format::Format;
-
-use std::env::args;
-use std::str::FromStr;
-
-macro_rules! use_remainder {
- ($destination: ident, $argument: expr, $index: expr) => {{
- let argument: &[char] = $argument;
- let index: usize = $index + 0x1;
-
- if argument.len() <= index {
- let c = argument[index - 0x1];
- Err(format!("missing value for short '{}'", c))
- } else {
- let value: String = argument[$index + 0x1..].iter().collect();
- $destination = Some(value);
-
- break;
- }
- }};
-}
-
-impl App {
- pub fn init() -> Result<Self, String> {
- if args().len() < 0x2 { Self::print_help() };
-
- let mut input: Option<String> = None;
- let mut output: Option<String> = None;
- let mut cpu: Option<String> = None;
- let mut format: Option<String> = None;
-
- let mut handle_short = |argument: &String| -> Result<(), String> {
- let argument: Vec<char> = argument.chars().collect();
-
- for (index, c) in argument.iter().enumerate().skip(0x1) {
- match c {
- 'f' => use_remainder!(format, &argument, index)?,
- 'h' => Self::print_help(),
- 'o' => use_remainder!(output, &argument, index)?,
- 'm' => use_remainder!(cpu, &argument, index)?,
- 'v' => Self::print_version(),
-
- _ => { return Err(format!("invalid short parameter '{c}'")) },
- };
- }
-
- return Ok(());
- };
-
- for argument in args().skip(0x1) {
- if argument.is_empty() { continue };
-
- if argument.chars().nth(0x0) != Some('-') {
- // This argument is the input path.
-
- if input.is_some() { return Err(format!("input pathy is already set (to \"{}\")", input.as_ref().unwrap())) };
-
- input = Some(argument.to_owned());
- continue;
- }
-
- handle_short(&argument)?;
- }
-
- // Check if any of the mandatory parameters have
- // been set.
- if input.is_none() { return Err("missing input path".to_string()) };
- if output.is_none() { output = Some("a.out".to_string()) };
- if cpu.is_none() { return Err("missing cpu".to_string()) };
-
- let format = match format {
- Some(format) => Format::from_str(&format)?,
- _ => Format::default(),
- };
-
- return Ok(Self {
- input: input.unwrap(),
- output: output.unwrap(),
-
- cpu: Cpu::from_str(&cpu.unwrap())?,
- format,
- });
- }
-}