diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-20 14:33:09 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-20 14:33:09 +1000 |
commit | 6352e8e3196f78388b6c771073f9e03eaa612673 (patch) | |
tree | e23772f79a7fbc41bc9108951e9e136857484bf4 /source/base/StarVersionOptionParser.cpp | |
parent | 6741a057e5639280d85d0f88ba26f000baa58f61 (diff) |
everything everywhere
all at once
Diffstat (limited to 'source/base/StarVersionOptionParser.cpp')
-rw-r--r-- | source/base/StarVersionOptionParser.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/source/base/StarVersionOptionParser.cpp b/source/base/StarVersionOptionParser.cpp new file mode 100644 index 0000000..85995ec --- /dev/null +++ b/source/base/StarVersionOptionParser.cpp @@ -0,0 +1,46 @@ +#include "StarVersionOptionParser.hpp" +#include "StarFile.hpp" + +namespace Star { + +void VersionOptionParser::printVersion(std::ostream& os) { + format(os, "Starbound Version %s (%s)\n", StarVersionString, StarArchitectureString); + format(os, "Source Identifier - %s\n", StarSourceIdentifierString); +} + +VersionOptionParser::VersionOptionParser() { + addSwitch("help", "Show help text"); + addSwitch("version", "Print version info"); +} + +VersionOptionParser::Options VersionOptionParser::parseOrDie(StringList const& cmdLineArguments) const { + Options options; + StringList errors; + tie(options, errors) = OptionParser::parseOptions(cmdLineArguments); + + if (options.switches.contains("version")) + printVersion(std::cout); + + if (options.switches.contains("help")) + printHelp(std::cout); + + if (options.switches.contains("version") || options.switches.contains("help")) + std::exit(0); + + if (!errors.empty()) { + for (auto const& err : errors) + coutf("Error: %s\n", err); + coutf("\n"); + printHelp(std::cout); + std::exit(1); + } + + return options; +} + +VersionOptionParser::Options VersionOptionParser::commandParseOrDie(int argc, char** argv) { + setCommandName(File::baseName(argv[0])); + return parseOrDie(StringList(argc - 1, argv + 1)); +} + +} |