diff --git a/examples/hello_world/distribute_options.yaml b/examples/hello_world/distribute_options.yaml index 02a80ac4..e04ccea5 100644 --- a/examples/hello_world/distribute_options.yaml +++ b/examples/hello_world/distribute_options.yaml @@ -1,6 +1,6 @@ output: dist/ variables: - FLUTTER_ROOT: ~/fvm/versions/3.10.0 + FLUTTER_ROOT: ~/fvm/versions/3.10.3 # PGYER_API_KEY: your api key releases: - name: dev-profile @@ -79,7 +79,7 @@ releases: jobs: - name: android-aab variables: - FLUTTER_ROOT: ~/fvm/versions/3.10.2 + FLUTTER_ROOT: ~/fvm/versions/3.10.3 package: platform: android target: aab @@ -113,6 +113,8 @@ releases: package: platform: macos target: dmg + build_args: + dart-define-from-file: env.json - name: macos-pkg package: platform: macos diff --git a/examples/hello_world/env.json b/examples/hello_world/env.json new file mode 100644 index 00000000..85ade72d --- /dev/null +++ b/examples/hello_world/env.json @@ -0,0 +1,3 @@ +{ + "APP_ENV": "dev" +} diff --git a/examples/hello_world/lib/main.dart b/examples/hello_world/lib/main.dart index be84e310..58ed234c 100644 --- a/examples/hello_world/lib/main.dart +++ b/examples/hello_world/lib/main.dart @@ -50,6 +50,10 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State { int _counter = 0; + String get _appEnv { + return const String.fromEnvironment('APP_ENV'); + } + String get _buildName { return const String.fromEnvironment('FLUTTER_BUILD_NAME'); } @@ -110,6 +114,10 @@ class _MyHomePageState extends State { '$_counter', style: Theme.of(context).textTheme.headlineMedium, ), + Text( + 'APP_ENV: $_appEnv', + style: Theme.of(context).textTheme.bodyMedium, + ), Text( 'FLUTTER_BUILD_NAME: $_buildName', style: Theme.of(context).textTheme.bodyMedium, diff --git a/examples/hello_world/pubspec.lock b/examples/hello_world/pubspec.lock index e69e7740..01d211c7 100644 --- a/examples/hello_world/pubspec.lock +++ b/examples/hello_world/pubspec.lock @@ -45,10 +45,10 @@ packages: dependency: "direct main" description: name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" fake_async: dependency: transitive description: @@ -66,10 +66,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" flutter_test: dependency: "direct dev" description: flutter diff --git a/packages/flutter_app_builder/lib/src/builders/app_builder.dart b/packages/flutter_app_builder/lib/src/builders/app_builder.dart index f1555513..124c5a5f 100644 --- a/packages/flutter_app_builder/lib/src/builders/app_builder.dart +++ b/packages/flutter_app_builder/lib/src/builders/app_builder.dart @@ -65,7 +65,7 @@ abstract class AppBuilder { ); if (processResult.exitCode != 0) { - throw BuildError(); + throw BuildError('${processResult.stderr}'); } return resultResolver.resolve(config)..duration = time.elapsed; diff --git a/packages/flutter_app_builder/lib/src/commands/flutter.dart b/packages/flutter_app_builder/lib/src/commands/flutter.dart index 6b1999b0..125d1b63 100644 --- a/packages/flutter_app_builder/lib/src/commands/flutter.dart +++ b/packages/flutter_app_builder/lib/src/commands/flutter.dart @@ -56,6 +56,12 @@ class _Flutter extends Command { String flutterRoot = environment?['FLUTTER_ROOT'] ?? ''; if (flutterRoot.isNotEmpty) { flutterRoot = pathExpansion(flutterRoot, environment ?? {}); + if (!Directory(flutterRoot).existsSync()) { + throw CommandError( + this, + 'FLUTTER_ROOT environment variable is set to a path that does not exist: $flutterRoot', + ); + } return p.join(flutterRoot, 'bin', 'flutter'); } return 'flutter'; @@ -63,7 +69,7 @@ class _Flutter extends Command { Map? environment; - withEnv(Map? environment) { + _Flutter withEnv(Map? environment) { this.environment = environment; return this; } diff --git a/packages/shell_executor/lib/shell_executor.dart b/packages/shell_executor/lib/shell_executor.dart index 23dbbbee..90d7254d 100644 --- a/packages/shell_executor/lib/shell_executor.dart +++ b/packages/shell_executor/lib/shell_executor.dart @@ -1,5 +1,6 @@ library shell_executor; export 'src/command.dart'; +export 'src/command_error.dart'; export 'src/shell_executor.dart'; export 'src/utils/path_expansion.dart'; diff --git a/packages/shell_executor/lib/src/command.dart b/packages/shell_executor/lib/src/command.dart index fb48ea32..229c2c08 100644 --- a/packages/shell_executor/lib/src/command.dart +++ b/packages/shell_executor/lib/src/command.dart @@ -30,26 +30,4 @@ abstract class Command { runInShell: runInShell, ); } - - Future run( - List arguments, { - Map? environment, - }) { - return exec( - arguments, - environment: environment, - ); - } - - ProcessResult runSync( - List arguments, { - Map? environment, - bool runInShell = false, - }) { - return execSync( - arguments, - environment: environment, - runInShell: runInShell, - ); - } } diff --git a/packages/shell_executor/lib/src/command_error.dart b/packages/shell_executor/lib/src/command_error.dart new file mode 100644 index 00000000..a27cd290 --- /dev/null +++ b/packages/shell_executor/lib/src/command_error.dart @@ -0,0 +1,13 @@ +import 'package:shell_executor/src/command.dart'; + +class CommandError extends Error { + CommandError(this.command, [this.message]); + + final Command command; + final String? message; + + @override + String toString() { + return (message != null) ? 'CommandError: $message' : 'CommandError'; + } +}