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

Function main

source/json_tool/json_tool.cpp:413–471  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

411}
412
413int main(int argc, char** argv) {
414 try {
415 Maybe<ParsedArgs> parsedArgs = parseArgs(argc, argv);
416
417 if (!parsedArgs) {
418 cerrf("Usage: {} [--get <json-path>] (-j <json> | <json-file>*)\n", argv[0]);
419 cerrf(
420 "Usage: {} --set <json-path> <json> [-i] [(--at (beginning|end) | --before <key> | --after <key>)] (-j "
421 "<json> | <json-file>*)\n",
422 argv[0]);
423 cerrf(
424 "Usage: {} --add <json-path> <json> [-i] [(--at (beginning|end) | --before <key> | --after <key>)] (-j "
425 "<json> | <json-file>*)\n",
426 argv[0]);
427 cerrf(
428 "Usage: {} --edit <json-path> [(--at (beginning|end) | --before <key> | --after <key>)] [--input "
429 "(csv|json|string)] <json-file>+\n",
430 argv[0]);
431 cerrf("\n");
432 cerrf("Example: {} --get /dialog/0/message guard.npctype\n", argv[0]);
433 cerrf("Example: {} --get 'foo[0]' -j '{\"foo\":[0,1,2,3]}'\n", argv[0]);
434 cerrf("Example: {} --edit /tags --input csv --find ../assets/ .object\n", argv[0]);
435 return 1;
436 }
437
438 OutputPtr output = parsedArgs->options.output;
439 bool success = true;
440
441 if (parsedArgs->command.is<EditCommand>()) {
442 return edit(argc, argv, parsedArgs->command.get<EditCommand>().path, parsedArgs->options, parsedArgs->inputs);
443
444 } else if (parsedArgs->inputs.size() == 0) {
445 // No files were provided. Reading from stdin
446 success &= process(output->toFunction(), parsedArgs->command, parsedArgs->options, readStdin());
447 } else {
448 for (Input const& input : parsedArgs->inputs) {
449 success &= process(output->toFunction(), parsedArgs->command, parsedArgs->options, input);
450 }
451 }
452
453 output->flush();
454
455 if (!success)
456 return 1;
457 return 0;
458
459 } catch (JsonParsingException const& e) {
460 cerrf("{}\n", e.what());
461 return 1;
462
463 } catch (JsonException const& e) {
464 cerrf("{}\n", e.what());
465 return 1;
466
467 } catch (std::exception const& e) {
468 cerrf("Exception caught: {}\n", outputException(e, true));
469 return 1;
470 }

Callers

nothing calls this directly

Calls 9

parseArgsFunction · 0.85
cerrfFunction · 0.85
processFunction · 0.85
readStdinFunction · 0.85
toFunctionMethod · 0.80
outputExceptionFunction · 0.50
sizeMethod · 0.45
flushMethod · 0.45
whatMethod · 0.45

Tested by

no test coverage detected