6 #include <boost/optional.hpp>
9 #include "info/globalcode/parameterLister/OutputModule.h"
10 #include "info/globalcode/parameterLister/TerminalOutputModule.h"
13 using namespace info::globalcode::parameterLister;
16 namespace globalcode {
17 namespace parameterLister {
19 const string ENV_BASE = "PARAMETER_LISTER";
20 const string ENV_OUTPUT_MODULE_NAME = ENV_BASE + "_OUTPUT";
22 boost::optional<string> getenv(const string name) {
23 const char * value = ::getenv(name.c_str());
25 return boost::optional<string>();
27 return boost::optional<string>(value);
35 shared_ptr<OutputModule> chooseOutputModule() {
36 boost::optional<string> moduleName = getenv(ENV_OUTPUT_MODULE_NAME);
37 if (moduleName.is_initialized()) {
38 // TODO: use a map instead of sequence of IFs
39 if (moduleName.get() == "terminal") {
40 return shared_ptr<OutputModule>(new TerminalOutputModule());
44 return shared_ptr<OutputModule>(new OutputModule());
47 int main(int argc, char* argv[]) {
50 string command = argv[0];
53 for (int i = 1; i < argc; i++) {
54 args.push_back(argv[i]);
58 shared_ptr<OutputModule> outputModule = chooseOutputModule();
60 return outputModule->process(cout, command, args);