MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / parseArgs

Function parseArgs

source/json_tool/json_tool.cpp:237–401  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

235}
236
237Maybe<ParsedArgs> parseArgs(int argc, char** argv) {
238 // Skip the program name
239 Deque<String> args = Deque<String>(argv + 1, argv + argc);
240
241 ParsedArgs parsed;
242
243 // Parse option arguments
244 while (!args.empty()) {
245 String const& arg = args.takeFirst();
246 if (arg == "--get" || arg == "--opt") {
247 // Retrieve values at a given path in the Json document
248 if (!parsed.command.empty() || args.empty())
249 return {};
250 JsonPath::PathPtr path;
251 bool children = false;
252 tie(path, children) = parseGetPath(args.takeFirst());
253 parsed.command = GetCommand{path, arg == "--opt", children};
254
255 } else if (arg == "--set") {
256 // Set the value at the given path in the Json document
257 if (!parsed.command.empty() || args.size() < 2)
258 return {};
259 JsonPath::PathPtr path = parsePath(args.takeFirst());
260 FormattedJson value = FormattedJson::parse(args.takeFirst());
261 parsed.command = SetCommand{path, value};
262
263 } else if (arg == "--add") {
264 // Add (insert) a path to a Json document
265 if (!parsed.command.empty() || args.size() < 2)
266 return {};
267 JsonPath::PathPtr path = parsePath(args.takeFirst());
268 FormattedJson value = FormattedJson::parse(args.takeFirst());
269 parsed.command = AddCommand{path, value};
270
271 } else if (arg == "--remove") {
272 // Remove a path from a Json document
273 if (!parsed.command.empty() || args.empty())
274 return {};
275 parsed.command = RemoveCommand{parsePath(args.takeFirst())};
276
277 } else if (arg == "--edit") {
278 // Interactive bullk Json editor
279 if (!parsed.command.empty() || args.empty())
280 return {};
281 parsed.command = EditCommand{parsePath(args.takeFirst())};
282
283 } else if (arg == "--editor-image") {
284 if (args.empty())
285 return {};
286 parsed.options.editorImages.append(parsePath(args.takeFirst()));
287
288 } else if (arg == "--input") {
289 // Configure the input syntax for --edit
290 if (args.empty())
291 return {};
292 String format = args.takeFirst();
293 if (format == "json" || format == "generic")
294 parsed.options.editFormat = make_shared<GenericInputFormat>();

Callers 1

mainFunction · 0.85

Calls 8

parseGetPathFunction · 0.85
parsePathFunction · 0.85
cerrfFunction · 0.85
parseFunction · 0.50
emptyMethod · 0.45
takeFirstMethod · 0.45
sizeMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected