main function

Future<void> main(
  1. List<String> arguments
)

Implementation

Future<void> main(List<String> arguments) async {
  final argsParser = describeArguments();
  final parsedArgs = argsParser.parse(arguments);

  if (parsedArgs[help] || arguments.isEmpty) {
    print(
      """
A command-line app which is used to generate serializers for entities.
Usage: entgen [arguments]
Options:
${argsParser.usage}""",
    );
    return;
  }

  final String? pathToXml = parsedArgs[input];
  if (pathToXml == null) {
    throw Exception("Path to the XML file must be specified");
  }
  final shouldSplitByFiles = parsedArgs[splitByFiles];
  final String? pathToOutput = parsedArgs[output];
  final xmlFile = File(pathToXml);

  if (!await xmlFile.exists()) {
    print(xmlFile.absolute.path);
    print("Given file $pathToXml doesn't exist");
    exit(1);
  } else {
    final document = XmlDocument.parse(xmlFile.readAsStringSync());
    final Model model = Model();
    ModelGenerator(from: document, model: model, readFileFunc: _readFile);
    final outputGenerator = OutputGenerator(
      models: model,
      outputPath: pathToOutput,
      splitByFiles: shouldSplitByFiles,
    );
    outputGenerator.generateOutput();
    print("Done!");
  }
}