vojtech@29
|
1 |
/**
|
vojtech@29
|
2 |
* parameter-lister (Rust implementation)
|
vojtech@29
|
3 |
* Copyright © 2016 Vojtěch Král <vojtech@kral.hk>
|
vojtech@29
|
4 |
*
|
vojtech@29
|
5 |
* This program is free software: you can redistribute it and/or modify
|
vojtech@29
|
6 |
* it under the terms of the GNU General Public License as published by
|
vojtech@29
|
7 |
* the Free Software Foundation, either version 3 of the License, or
|
vojtech@29
|
8 |
* (at your option) any later version.
|
vojtech@29
|
9 |
*
|
vojtech@29
|
10 |
* This program is distributed in the hope that it will be useful,
|
vojtech@29
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
vojtech@29
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
vojtech@29
|
13 |
* GNU General Public License for more details.
|
vojtech@29
|
14 |
*
|
vojtech@29
|
15 |
* You should have received a copy of the GNU General Public License
|
vojtech@29
|
16 |
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
vojtech@29
|
17 |
*/
|
vojtech@29
|
18 |
use std::collections::HashMap;
|
vojtech@29
|
19 |
use std::env;
|
vojtech@29
|
20 |
use std::io;
|
vojtech@29
|
21 |
|
vojtech@29
|
22 |
mod outputmodule;
|
vojtech@29
|
23 |
mod terminalmodule;
|
vojtech@29
|
24 |
mod xmlmodule;
|
vojtech@29
|
25 |
|
vojtech@29
|
26 |
use outputmodule::OutputModule;
|
vojtech@29
|
27 |
use terminalmodule::TerminalModule;
|
vojtech@29
|
28 |
use xmlmodule::XMLModule;
|
vojtech@29
|
29 |
|
vojtech@29
|
30 |
static ENV_OUTPUT_MODULE_NAME: &'static str = "PARAMETER_LISTER_OUTPUT";
|
vojtech@29
|
31 |
|
vojtech@29
|
32 |
|
vojtech@29
|
33 |
fn main() {
|
vojtech@29
|
34 |
let mut modules: HashMap<_, Box<OutputModule>> = HashMap::new();
|
vojtech@29
|
35 |
modules.insert(terminalmodule::MOD_NAME, Box::new(TerminalModule::new()));
|
vojtech@29
|
36 |
modules.insert(xmlmodule::MOD_NAME, Box::new(XMLModule::new()));
|
vojtech@29
|
37 |
|
vojtech@29
|
38 |
let module_name = env::var(ENV_OUTPUT_MODULE_NAME).unwrap_or(String::from("terminal"));
|
vojtech@29
|
39 |
let module = modules.get(&*module_name).expect(&*format!("No such module: {}", module_name));
|
vojtech@29
|
40 |
|
vojtech@29
|
41 |
match module.process(&mut io::stdout(), env::args().collect()) {
|
vojtech@29
|
42 |
Ok(()) => {},
|
vojtech@29
|
43 |
Err(msg) => panic!("Error while processing output with module {}: {}", module_name, msg),
|
vojtech@29
|
44 |
}
|
vojtech@29
|
45 |
}
|