Jpp 21.0.0-rc.1-88-g0130508c4
the software that should make you happy
Loading...
Searching...
No Matches
km3net-dataformat-version-main.cc
Go to the documentation of this file.
1
3
4#include <iostream>
5#include <string>
6
7namespace {
8
9std::string jsonEscape(const std::string& input) {
10 std::string output;
11 for (const char character : input) {
12 switch (character) {
13 case '\"':
14 output += "\\\"";
15 break;
16 case '\\':
17 output += "\\\\";
18 break;
19 case '\b':
20 output += "\\b";
21 break;
22 case '\f':
23 output += "\\f";
24 break;
25 case '\n':
26 output += "\\n";
27 break;
28 case '\r':
29 output += "\\r";
30 break;
31 case '\t':
32 output += "\\t";
33 break;
34 default:
35 output += character;
36 break;
37 }
38 }
39 return output;
40}
41
42void printText() {
43 std::cout
44 << "package_name=" << km3net::dataformat::getPackageName() << '\n'
45 << "version=" << km3net::dataformat::getVersion() << '\n'
46 << "version_major=" << km3net::dataformat::getVersionMajor() << '\n'
47 << "version_minor=" << km3net::dataformat::getVersionMinor() << '\n'
48 << "version_patch=" << km3net::dataformat::getVersionPatch() << '\n'
49 << "git_tag=" << km3net::dataformat::getGitTag() << '\n'
50 << "git_describe=" << km3net::dataformat::getGitDescribe() << '\n'
51 << "git_commit=" << km3net::dataformat::getGitCommit() << '\n'
52 << "git_short_hash=" << km3net::dataformat::getShortHash() << '\n'
53 << "git_dirty=" << (km3net::dataformat::getGitDirty() ? "true" : "false") << '\n'
54 << "commits_since_tag=" << km3net::dataformat::getCommitsSinceTag() << '\n'
55 << "source_available=" << (km3net::dataformat::hasVersionMetadata() ? "true" : "false") << '\n';
56}
57
58void printJson() {
59 std::cout
60 << "{\n"
61 << " \"package_name\": \"" << jsonEscape(km3net::dataformat::getPackageName()) << "\",\n"
62 << " \"version\": \"" << jsonEscape(km3net::dataformat::getVersion()) << "\",\n"
63 << " \"version_major\": " << km3net::dataformat::getVersionMajor() << ",\n"
64 << " \"version_minor\": " << km3net::dataformat::getVersionMinor() << ",\n"
65 << " \"version_patch\": " << km3net::dataformat::getVersionPatch() << ",\n"
66 << " \"git_tag\": \"" << jsonEscape(km3net::dataformat::getGitTag()) << "\",\n"
67 << " \"git_describe\": \"" << jsonEscape(km3net::dataformat::getGitDescribe()) << "\",\n"
68 << " \"git_commit\": \"" << jsonEscape(km3net::dataformat::getGitCommit()) << "\",\n"
69 << " \"git_short_hash\": \"" << jsonEscape(km3net::dataformat::getShortHash()) << "\",\n"
70 << " \"git_dirty\": " << (km3net::dataformat::getGitDirty() ? "true" : "false") << ",\n"
71 << " \"commits_since_tag\": " << km3net::dataformat::getCommitsSinceTag() << ",\n"
72 << " \"source_available\": " << (km3net::dataformat::hasVersionMetadata() ? "true" : "false") << '\n'
73 << "}\n";
74}
75
76}
77
78int main(int argc, char** argv) {
79 if (argc == 1) {
80 printText();
81 return 0;
82 }
83
84 if (argc == 2 && std::string(argv[1]) == "--json") {
85 printJson();
86 return 0;
87 }
88
89 std::cerr << "usage: " << argv[0] << " [--json]\n";
90
91 return 1;
92}
int main()