// Dancing Droids // Copyright (C) 2020 Martin HART, Volodymyr PATUTA, Stephane Elias BENABDESLAM // This program 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. // This program 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 this program. If not, see . use clap::{App, Arg}; use std::fs; use std::io; mod robot; mod world; /// Parse the config file, generate the world and robot pool. fn parse_config(raw_conf: String, pool: &Vec) -> Result { // test exemple, i am currently writting the real code. // This function return the map OR an error inside a Result so we // can catch error using '?' in main // we also create robots here and put them into the pool. Ok(world::World { x: 5, y: 5 }) } /// Retrieve the content of a file and return it as a string. fn open_file(filename: &str) -> io::Result { let content = fs::read_to_string(filename)?; Ok(content) } fn main() -> Result<(), Box> { // We handle CLI flags here. let matches = App::new("DancingDroids") .version("0.1.0") .about("When droids dance togethers") .arg( Arg::with_name("file") .short("f") .long("file") .takes_value(true) .help("Configuration file"), ) .get_matches(); let raw_conf = open_file(matches.value_of("file").unwrap_or("two_robots.txt"))?; let robot_pool: Vec = Vec::new(); let world = parse_config(raw_conf, &robot_pool)?; Ok(()) } #[cfg(test)] mod tests { use super::*; #[test] fn test_open_file() { assert!(open_file("two_robots.txt").is_ok()); assert!(open_file("test_unexisting_file.extension").is_err()); } }