mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
103f56922f
* refactor: build tool * chore: update release.yml * chore: skip creating release if already created
61 lines
1.9 KiB
Dart
61 lines
1.9 KiB
Dart
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');
|
|
}
|
|
}
|