c++/parameter-lister/CLI.cpp
author František Kučera <franta-hg@frantovo.cz>
Sun, 03 May 2015 22:00:12 +0200
changeset 7 2f46492e90bc
parent 5 1581a99ab33f
child 9 598a575ae57f
permissions -rw-r--r--
OutputModule and TerminalOutputModule skeletons
franta-hg@0
     1
#include <cstdlib>
franta-hg@1
     2
#include <iostream>
franta-hg@3
     3
#include <vector>
franta-hg@3
     4
#include <algorithm>
franta-hg@5
     5
#include <boost/optional.hpp>
franta-hg@3
     6
franta-hg@5
     7
#include "info/globalcode/parameterLister/terminalCodes/TerminalCodes.h"
franta-hg@7
     8
#include "info/globalcode/parameterLister/OutputModule.h"
franta-hg@7
     9
#include "info/globalcode/parameterLister/TerminalOutputModule.h"
franta-hg@0
    10
franta-hg@0
    11
using namespace std;
franta-hg@3
    12
using namespace info::globalcode::parameterLister;
franta-hg@0
    13
franta-hg@5
    14
namespace info {
franta-hg@5
    15
namespace globalcode {
franta-hg@5
    16
namespace parameterLister {
franta-hg@5
    17
franta-hg@5
    18
boost::optional<string> getenv(const string name) {
franta-hg@5
    19
	const char * value = ::getenv(name.c_str());
franta-hg@5
    20
	if (value == 0) {
franta-hg@5
    21
		return boost::optional<string>();
franta-hg@5
    22
	} else {
franta-hg@5
    23
		return boost::optional<string>(value);
franta-hg@5
    24
	}
franta-hg@5
    25
}
franta-hg@5
    26
franta-hg@5
    27
franta-hg@5
    28
}
franta-hg@5
    29
}
franta-hg@5
    30
}
franta-hg@5
    31
franta-hg@3
    32
int main(int argc, char* argv[]) {
franta-hg@1
    33
	terminalCodes::Modifier fgGreen(terminalCodes::FG_GREEN);
franta-hg@1
    34
	terminalCodes::Modifier fgReset(terminalCodes::FG_DEFAULT);
franta-hg@4
    35
franta-hg@3
    36
	cout << "INFO: " << fgGreen << "Parameter lister" << fgReset << " is starting" << endl;
franta-hg@1
    37
franta-hg@3
    38
	string command = argv[0];
franta-hg@3
    39
	vector<string> args;
franta-hg@3
    40
franta-hg@3
    41
	for (int i = 1; i < argc; i++) {
franta-hg@3
    42
		args.push_back(argv[i]);
franta-hg@3
    43
	}
franta-hg@3
    44
franta-hg@3
    45
	for_each(args.begin(), args.end(), [command, fgGreen, fgReset](string s) {
franta-hg@3
    46
		cout << fgGreen << command << fgReset << ": " << s << endl;
franta-hg@3
    47
	});
franta-hg@3
    48
franta-hg@3
    49
franta-hg@4
    50
	for (int i = 0; i < args.size(); i++) {
franta-hg@4
    51
		string s = args[i];
franta-hg@4
    52
		cout << i + 1 << ":" << s.length() << " = \"" << s << "\"" << endl;
franta-hg@4
    53
	}
franta-hg@4
    54
franta-hg@5
    55
	{
franta-hg@5
    56
		string envName = args[0];
franta-hg@5
    57
		boost::optional<string> outputModule = getenv(envName);
franta-hg@4
    58
franta-hg@5
    59
		if (outputModule.is_initialized()) {
franta-hg@5
    60
			cout << "ENV: " << envName << " = " << outputModule.get();
franta-hg@5
    61
		} else {
franta-hg@5
    62
			cout << "ENV: " << envName << " is missing";
franta-hg@5
    63
		}
franta-hg@5
    64
	}
franta-hg@7
    65
	
franta-hg@7
    66
	{
franta-hg@7
    67
		OutputModule om;
franta-hg@7
    68
		TerminalOutputModule tom;
franta-hg@7
    69
	}
franta-hg@3
    70
franta-hg@1
    71
franta-hg@0
    72
	return 0;
franta-hg@5
    73
}