+// mod argument_parser;
+mod configuration;
+mod command;
+
+use std::env::args;
+use std::io::Result;
+use configuration::Configuration;
+use command::{available_commands, Command, help::Help};
+
+fn main() -> Result<()> {
+ let configuration = Configuration::new();
+ let commands = available_commands();
+
+ println!("CONFIGURATION DIRECTORY: {}", configuration.config_directory.display());
+ println!("DATA DIRECTORY: {}", configuration.data_directory.display());
+ println!("OUTPUT DIRECTORY: {}", configuration.output_directory.display());
+
+ let arguments: Vec<String> = args().collect();
+
+ if let Some(command_name) = arguments.get(1) {
+ if let Some(command) = commands.iter().find(|&c| c.command() == command_name) {
+ return command.execute(arguments.get(2));
+ }
+ }
+
+ Help::new().execute(None)
+}