// mod argument_parser;
mod configuration;
mod command;
+mod constants;
+mod gemini_parser;
+mod generator;
+mod archiver;
+mod metadata;
+mod post;
+mod template;
+mod utils;
+mod remote;
use std::iter::once;
use std::env::args;
use std::io::Result;
use command::{available_commands, Command, help::Help};
+use configuration::Configuration;
fn main() -> Result<()> {
+ let result = run();
+
+ if cfg!(debug_assertions) {
+ result
+ } else {
+ match result {
+ Ok(_) => Ok(()),
+ Err(e) => {
+ eprintln!("Error: {}", e);
+ std::process::exit(1);
+ }
+ }
+ }
+}
+
+fn run() -> Result<()> {
+ let configuration = Configuration::new();
let commands = available_commands();
let arguments: Vec<String> = args().collect();
.collect();
for command in command_chain {
- let result = command.execute(arguments.get(2));
+ let result = command.execute(arguments.get(2), &configuration, command_name);
if let Err(_) = result {
return result;
}
}
}
- Help::new().execute(None)
+ Help::new().execute(None, &configuration, &"help".to_string())
}