AppFlowy/frontend/scripts/flutter_release_build/build_flowy.dart
Alex Wallen 103f56922f
fix: windows release build (#3168)
* refactor: build tool

* chore: update release.yml

* chore: skip creating release if already created
2023-08-17 21:03:29 +08:00

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');
}
}