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