Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/base/StarVersionOptionParser.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
commit6352e8e3196f78388b6c771073f9e03eaa612673 (patch)
treee23772f79a7fbc41bc9108951e9e136857484bf4 /source/base/StarVersionOptionParser.cpp
parent6741a057e5639280d85d0f88ba26f000baa58f61 (diff)
everything everywhere
all at once
Diffstat (limited to 'source/base/StarVersionOptionParser.cpp')
-rw-r--r--source/base/StarVersionOptionParser.cpp46
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));
+}
+
+}