| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | import 'dart:io';part 'tool.dart';const excludeTagBegin = 'BEGIN: EXCLUDE_IN_RELEASE';const excludeTagEnd = 'END: EXCLUDE_IN_RELEASE';Future<void> main(List<String> args) async {  const help = '''A build script that modifies build assets before building the release version of AppFlowy.args[0] (required): The subcommand to use (build, include-directives, exclude-directives, run).  - run: calls exclude-directives, build, include-directives.  - build: builds the release version of AppFlowy.  - include-directives: adds the directives from pubspec.yaml.  - exclude-directives: removes the directives from pubspec.yaml.args[1] (required): The repository root for appflowy (the directory containing pubspec.yaml).args[2] (required): version (only relevant for build). The version of the app to build.''';  const numArgs = 3;  assert(args.length == numArgs,      'Expected ${numArgs}, got ${args.length}. Read the following for instructions about how to use this script.\n\n$help');  if (args[0] == '-h' || args[0] == '--help') {    stdout.write(help);    stdout.flush();  }  // parse the vesrion  final version = args[2];  // parse the first required argument  final repositoryRoot = Directory(args[1]);  assert(await repositoryRoot.exists(),      '$repositoryRoot is an invalid directory. Please try again with a valid directory.\n\n$help');  // parse the command  final command = args[0];  final tool =      BuildTool(repositoryRoot: repositoryRoot.path, appVersion: version);  switch (command) {    case 'run':      await tool.run();      break;    case 'build':      await tool.build();      break;    case 'include-directives':      await tool.directives(ModifyMode.include);      break;    case 'exclude-directives':      await tool.directives(ModifyMode.exclude);      break;    default:      throw StateError('Invalid command: $command');  }}
 |