diff --git a/build_tool/lib/src/builder.dart b/build_tool/lib/src/builder.dart index 2d056de..9393f63 100644 --- a/build_tool/lib/src/builder.dart +++ b/build_tool/lib/src/builder.dart @@ -1,4 +1,5 @@ import 'package:collection/collection.dart'; +import 'package:logging/logging.dart'; import 'package:path/path.dart' as path; import 'android_environment.dart'; @@ -9,6 +10,8 @@ import 'rustup.dart'; import 'target.dart'; import 'util.dart'; +final _log = Logger('builder'); + enum BuildConfiguration { debug, release, @@ -61,17 +64,24 @@ class BuildEnvironment { this.javaHome, }); - static BuildEnvironment fromEnvironment({ - required bool isAndroid, - }) { + static BuildConfiguration parseBuildConfiguration(String value) { + // XCode configuration adds the flavor to configuration name. + final firstSegment = value.split('-').first; final buildConfiguration = BuildConfiguration.values.firstWhereOrNull( - (e) => e.name == Environment.configuration, + (e) => e.name == firstSegment, ); if (buildConfiguration == null) { - throw BuildException( - 'Unknown build configuration: ${Environment.configuration}', - ); + _log.warning('Unknown build configuraiton $value, will assume release'); + return BuildConfiguration.release; } + return buildConfiguration; + } + + static BuildEnvironment fromEnvironment({ + required bool isAndroid, + }) { + final buildConfiguration = + parseBuildConfiguration(Environment.configuration); final manifestDir = Environment.manifestDir; final crateOptions = CargokitCrateOptions.load( manifestDir: manifestDir, diff --git a/build_tool/test/builder_test.dart b/build_tool/test/builder_test.dart new file mode 100644 index 0000000..e92852e --- /dev/null +++ b/build_tool/test/builder_test.dart @@ -0,0 +1,28 @@ +import 'package:build_tool/src/builder.dart'; +import 'package:test/test.dart'; + +void main() { + test('parseBuildConfiguration', () { + var b = BuildEnvironment.parseBuildConfiguration('debug'); + expect(b, BuildConfiguration.debug); + + b = BuildEnvironment.parseBuildConfiguration('profile'); + expect(b, BuildConfiguration.profile); + + b = BuildEnvironment.parseBuildConfiguration('release'); + expect(b, BuildConfiguration.release); + + b = BuildEnvironment.parseBuildConfiguration('debug-dev'); + expect(b, BuildConfiguration.debug); + + b = BuildEnvironment.parseBuildConfiguration('profile'); + expect(b, BuildConfiguration.profile); + + b = BuildEnvironment.parseBuildConfiguration('profile-prod'); + expect(b, BuildConfiguration.profile); + + // fallback to release + b = BuildEnvironment.parseBuildConfiguration('unknown'); + expect(b, BuildConfiguration.release); + }); +}