| @@ -84,6 +84,15 @@ auto handleCommand(const std::string& command, const std::vector<std::string>& a |
| 84 | std::string gameName{arguments[0]}; | 84 | std::string gameName{arguments[0]}; |
| 85 | runGame(gameName); | 85 | runGame(gameName); |
| 86 | } | 86 | } |
| | 87 | + else if (command == "--version") { |
| | 88 | + std::cout << "fluffy v0.1.1" << std::endl; |
| | 89 | + } |
| | 90 | + else if (command == "--help") { |
| | 91 | + std::cout << "help" << std::endl; |
| | 92 | + } |
| | 93 | + else { |
| | 94 | + std::cout << "fluffy: '" << command << "' is not a fluffy command. See 'fluffy --help'" << std::endl; |
| | 95 | + } |
| 87 | } | 96 | } |
| 88 | | 97 | |
| 89 | auto style() -> ButtonOption { | 98 | auto style() -> ButtonOption { |
| @@ -136,6 +145,20 @@ auto runConsoleApp() -> void { |
| 136 | | 145 | |
| 137 | } | 146 | } |
| 138 | | 147 | |
| | 148 | +auto handleFlags(std::vector<std::string> flags) -> void { |
| | 149 | + for (const auto& flag : flags) { |
| | 150 | + if (flag == "--version") { |
| | 151 | + std::cout << "fluffy v0.1.1" << std::endl; |
| | 152 | + } |
| | 153 | + else if (flag == "--help") { |
| | 154 | + std::cout << "help" << std::endl; |
| | 155 | + } |
| | 156 | + else { |
| | 157 | + std::cout << "fluffy: '" << flag << "' is not a fluffy command. See 'fluffy --help'" << std::endl; |
| | 158 | + } |
| | 159 | + } |
| | 160 | +} |
| | 161 | + |
| 139 | auto getExecutablePath() -> std::filesystem::path { | 162 | auto getExecutablePath() -> std::filesystem::path { |
| 140 | char result[PATH_MAX]; | 163 | char result[PATH_MAX]; |
| 141 | ssize_t count = readlink("/proc/self/exe", result, PATH_MAX); | 164 | ssize_t count = readlink("/proc/self/exe", result, PATH_MAX); |
| @@ -146,7 +169,8 @@ auto parseFlags(int argc, char const *argv[]) -> std::vector<std::string> { |
| 146 | std::vector<std::string> flags; | 169 | std::vector<std::string> flags; |
| 147 | for (int i = 1; i < argc; i ++) { | 170 | for (int i = 1; i < argc; i ++) { |
| 148 | std::string appArgument = argv[i]; | 171 | std::string appArgument = argv[i]; |
| 149 | - if (appArgument[0] == '-') flags.emplace_back(appArgument); | 172 | + if (appArgument.size() < 2) continue; |
| | 173 | + if (appArgument[0] == '-' and appArgument[1] != '-') flags.emplace_back(appArgument); |
| 150 | } | 174 | } |
| 151 | return flags; | 175 | return flags; |
| 152 | } | 176 | } |
| @@ -156,7 +180,8 @@ auto parseCommand(int argc, char const* argv[]) { |
| 156 | std::vector<std::string> arguments{}; | 180 | std::vector<std::string> arguments{}; |
| 157 | for (int i = 1; i < argc; i ++) { | 181 | for (int i = 1; i < argc; i ++) { |
| 158 | std::string appArgument = argv[i]; | 182 | std::string appArgument = argv[i]; |
| 159 | - if (appArgument[0] != '-') { | 183 | + if (appArgument.size() < 2) continue; |
| | 184 | + if ((appArgument[0] == '-' and appArgument[1] == '-') or appArgument[0] != '-') { |
| 160 | if (command == "") command = appArgument; | 185 | if (command == "") command = appArgument; |
| 161 | else arguments.emplace_back(appArgument); | 186 | else arguments.emplace_back(appArgument); |
| 162 | } | 187 | } |
| @@ -175,7 +200,8 @@ auto main(int argc, char const *argv[]) -> int { |
| 175 | auto flags = parseFlags(argc, argv); | 200 | auto flags = parseFlags(argc, argv); |
| 176 | auto [command, arguments] = parseCommand(argc, argv); | 201 | auto [command, arguments] = parseCommand(argc, argv); |
| 177 | | 202 | |
| 178 | - handleCommand(command, arguments, database); | 203 | + handleFlags(flags); |
| | 204 | + if (command != "") handleCommand(command, arguments, database); |
| 179 | } | 205 | } |
| 180 | else { | 206 | else { |
| 181 | runConsoleApp(); | 207 | runConsoleApp(); |