From 87b37998326ab2291d20d26e0aae088f66cb3629 Mon Sep 17 00:00:00 2001 From: Eric Windmill Date: Fri, 1 Aug 2025 14:49:58 -0400 Subject: [PATCH] fix add to app workspace troubles --- .../.gitignore | 0 .../.metadata | 0 .../README.md | 0 .../analysis_options.yaml | 0 .../lib/cell.dart | 0 .../lib/main.dart | 0 .../pubspec.yaml | 0 .../test/widget_test.dart | 0 .../.gitignore | 0 .../.metadata | 0 .../README.md | 0 .../analysis_options.yaml | 0 .../lib/main.dart | 0 .../pubspec.yaml | 0 .../test/widget_test.dart | 0 .../test_driver/example.dart | 0 pubspec.yaml | 4 +- tool/ci_script.dart | 42 ++++-- tool/release.dart | 123 +++++++++++------- 19 files changed, 109 insertions(+), 60 deletions(-) rename add_to_app/android_view/{flutter_module_using_plugin => flutter_module_using_plugin_android_view}/.gitignore (100%) rename add_to_app/android_view/{flutter_module_using_plugin => flutter_module_using_plugin_android_view}/.metadata (100%) rename add_to_app/android_view/{flutter_module_using_plugin => flutter_module_using_plugin_android_view}/README.md (100%) rename add_to_app/android_view/{flutter_module_using_plugin => flutter_module_using_plugin_android_view}/analysis_options.yaml (100%) rename add_to_app/android_view/{flutter_module_using_plugin => flutter_module_using_plugin_android_view}/lib/cell.dart (100%) rename add_to_app/android_view/{flutter_module_using_plugin => flutter_module_using_plugin_android_view}/lib/main.dart (100%) rename add_to_app/android_view/{flutter_module_using_plugin => flutter_module_using_plugin_android_view}/pubspec.yaml (100%) rename add_to_app/android_view/{flutter_module_using_plugin => flutter_module_using_plugin_android_view}/test/widget_test.dart (100%) rename add_to_app/fullscreen/{flutter_module => flutter_module_fullscreen}/.gitignore (100%) rename add_to_app/fullscreen/{flutter_module => flutter_module_fullscreen}/.metadata (100%) rename add_to_app/fullscreen/{flutter_module => flutter_module_fullscreen}/README.md (100%) rename add_to_app/fullscreen/{flutter_module => flutter_module_fullscreen}/analysis_options.yaml (100%) rename add_to_app/fullscreen/{flutter_module => flutter_module_fullscreen}/lib/main.dart (100%) rename add_to_app/fullscreen/{flutter_module => flutter_module_fullscreen}/pubspec.yaml (100%) rename add_to_app/fullscreen/{flutter_module => flutter_module_fullscreen}/test/widget_test.dart (100%) rename add_to_app/fullscreen/{flutter_module => flutter_module_fullscreen}/test_driver/example.dart (100%) diff --git a/add_to_app/android_view/flutter_module_using_plugin/.gitignore b/add_to_app/android_view/flutter_module_using_plugin_android_view/.gitignore similarity index 100% rename from add_to_app/android_view/flutter_module_using_plugin/.gitignore rename to add_to_app/android_view/flutter_module_using_plugin_android_view/.gitignore diff --git a/add_to_app/android_view/flutter_module_using_plugin/.metadata b/add_to_app/android_view/flutter_module_using_plugin_android_view/.metadata similarity index 100% rename from add_to_app/android_view/flutter_module_using_plugin/.metadata rename to add_to_app/android_view/flutter_module_using_plugin_android_view/.metadata diff --git a/add_to_app/android_view/flutter_module_using_plugin/README.md b/add_to_app/android_view/flutter_module_using_plugin_android_view/README.md similarity index 100% rename from add_to_app/android_view/flutter_module_using_plugin/README.md rename to add_to_app/android_view/flutter_module_using_plugin_android_view/README.md diff --git a/add_to_app/android_view/flutter_module_using_plugin/analysis_options.yaml b/add_to_app/android_view/flutter_module_using_plugin_android_view/analysis_options.yaml similarity index 100% rename from add_to_app/android_view/flutter_module_using_plugin/analysis_options.yaml rename to add_to_app/android_view/flutter_module_using_plugin_android_view/analysis_options.yaml diff --git a/add_to_app/android_view/flutter_module_using_plugin/lib/cell.dart b/add_to_app/android_view/flutter_module_using_plugin_android_view/lib/cell.dart similarity index 100% rename from add_to_app/android_view/flutter_module_using_plugin/lib/cell.dart rename to add_to_app/android_view/flutter_module_using_plugin_android_view/lib/cell.dart diff --git a/add_to_app/android_view/flutter_module_using_plugin/lib/main.dart b/add_to_app/android_view/flutter_module_using_plugin_android_view/lib/main.dart similarity index 100% rename from add_to_app/android_view/flutter_module_using_plugin/lib/main.dart rename to add_to_app/android_view/flutter_module_using_plugin_android_view/lib/main.dart diff --git a/add_to_app/android_view/flutter_module_using_plugin/pubspec.yaml b/add_to_app/android_view/flutter_module_using_plugin_android_view/pubspec.yaml similarity index 100% rename from add_to_app/android_view/flutter_module_using_plugin/pubspec.yaml rename to add_to_app/android_view/flutter_module_using_plugin_android_view/pubspec.yaml diff --git a/add_to_app/android_view/flutter_module_using_plugin/test/widget_test.dart b/add_to_app/android_view/flutter_module_using_plugin_android_view/test/widget_test.dart similarity index 100% rename from add_to_app/android_view/flutter_module_using_plugin/test/widget_test.dart rename to add_to_app/android_view/flutter_module_using_plugin_android_view/test/widget_test.dart diff --git a/add_to_app/fullscreen/flutter_module/.gitignore b/add_to_app/fullscreen/flutter_module_fullscreen/.gitignore similarity index 100% rename from add_to_app/fullscreen/flutter_module/.gitignore rename to add_to_app/fullscreen/flutter_module_fullscreen/.gitignore diff --git a/add_to_app/fullscreen/flutter_module/.metadata b/add_to_app/fullscreen/flutter_module_fullscreen/.metadata similarity index 100% rename from add_to_app/fullscreen/flutter_module/.metadata rename to add_to_app/fullscreen/flutter_module_fullscreen/.metadata diff --git a/add_to_app/fullscreen/flutter_module/README.md b/add_to_app/fullscreen/flutter_module_fullscreen/README.md similarity index 100% rename from add_to_app/fullscreen/flutter_module/README.md rename to add_to_app/fullscreen/flutter_module_fullscreen/README.md diff --git a/add_to_app/fullscreen/flutter_module/analysis_options.yaml b/add_to_app/fullscreen/flutter_module_fullscreen/analysis_options.yaml similarity index 100% rename from add_to_app/fullscreen/flutter_module/analysis_options.yaml rename to add_to_app/fullscreen/flutter_module_fullscreen/analysis_options.yaml diff --git a/add_to_app/fullscreen/flutter_module/lib/main.dart b/add_to_app/fullscreen/flutter_module_fullscreen/lib/main.dart similarity index 100% rename from add_to_app/fullscreen/flutter_module/lib/main.dart rename to add_to_app/fullscreen/flutter_module_fullscreen/lib/main.dart diff --git a/add_to_app/fullscreen/flutter_module/pubspec.yaml b/add_to_app/fullscreen/flutter_module_fullscreen/pubspec.yaml similarity index 100% rename from add_to_app/fullscreen/flutter_module/pubspec.yaml rename to add_to_app/fullscreen/flutter_module_fullscreen/pubspec.yaml diff --git a/add_to_app/fullscreen/flutter_module/test/widget_test.dart b/add_to_app/fullscreen/flutter_module_fullscreen/test/widget_test.dart similarity index 100% rename from add_to_app/fullscreen/flutter_module/test/widget_test.dart rename to add_to_app/fullscreen/flutter_module_fullscreen/test/widget_test.dart diff --git a/add_to_app/fullscreen/flutter_module/test_driver/example.dart b/add_to_app/fullscreen/flutter_module_fullscreen/test_driver/example.dart similarity index 100% rename from add_to_app/fullscreen/flutter_module/test_driver/example.dart rename to add_to_app/fullscreen/flutter_module_fullscreen/test_driver/example.dart diff --git a/pubspec.yaml b/pubspec.yaml index 0f5553d81..d4a2d4a9c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,9 +5,9 @@ environment: sdk: ^3.9.0-0 workspace: - - add_to_app/android_view/flutter_module_using_plugin + - add_to_app/android_view/flutter_module_using_plugin_android_view - add_to_app/books/flutter_module_books - - add_to_app/fullscreen/flutter_module + - add_to_app/fullscreen/flutter_module_fullscreen - add_to_app/multiple_flutters/multiple_flutters_module - add_to_app/plugin/flutter_module_using_plugin - add_to_app/prebuilt_module/flutter_module diff --git a/tool/ci_script.dart b/tool/ci_script.dart index 008198abd..3b0d61591 100644 --- a/tool/ci_script.dart +++ b/tool/ci_script.dart @@ -9,6 +9,7 @@ Future main() async { final pubspecYaml = loadYaml(pubspecContent); final workspace = pubspecYaml['workspace'] as YamlList?; + await _runCommand('flutter', ['pub', 'get'], workingDirectory: rootDir.path); if (workspace == null) { print('No workspace found in pubspec.yaml'); exit(1); @@ -19,16 +20,20 @@ Future main() async { for (final package in packages) { final packagePath = path.join(rootDir.path, package); print('== Testing \'$package\' =='); - - await _runCommand('flutter', ['pub', 'get'], workingDirectory: packagePath); - await _runCommand('dart', ['analyze', '--fatal-infos', '--fatal-warnings'], - workingDirectory: packagePath); - await _runCommand('dart', ['format', '--output', 'none', '.'], - workingDirectory: packagePath); + await _runCommand('dart', [ + 'analyze', + '--fatal-infos', + '--fatal-warnings', + ], workingDirectory: packagePath); + await _runCommand('dart', [ + 'format', + '--output', + 'none', + '.', + ], workingDirectory: packagePath); if (await Directory(path.join(packagePath, 'test')).exists()) { - final packagePubspecFile = - File(path.join(packagePath, 'pubspec.yaml')); + final packagePubspecFile = File(path.join(packagePath, 'pubspec.yaml')); final packagePubspecContent = await packagePubspecFile.readAsString(); if (packagePubspecContent.contains('flutter:')) { await _runCommand('flutter', ['test'], workingDirectory: packagePath); @@ -39,13 +44,22 @@ Future main() async { } } -Future _runCommand(String executable, List arguments, - {required String workingDirectory}) async { - final process = await Process.start(executable, arguments, - workingDirectory: workingDirectory, mode: ProcessStartMode.inheritStdio); +Future _runCommand( + String executable, + List arguments, { + required String workingDirectory, +}) async { + final process = await Process.start( + executable, + arguments, + workingDirectory: workingDirectory, + mode: ProcessStartMode.inheritStdio, + ); final exitCode = await process.exitCode; if (exitCode != 0) { - print('Command "$executable ${arguments.join(' ')}" failed with exit code $exitCode in $workingDirectory'); + print( + 'Command "$executable ${arguments.join(' ')}" failed with exit code $exitCode in $workingDirectory', + ); exit(exitCode); } -} \ No newline at end of file +} diff --git a/tool/release.dart b/tool/release.dart index ba21c5438..c8886cc8a 100644 --- a/tool/release.dart +++ b/tool/release.dart @@ -19,19 +19,23 @@ class ReleaseScriptRunner { Future run(List arguments) async { final parser = ArgParser() - ..addFlag('dry-run', - negatable: false, - help: - 'Prints the commands that would be executed, but does not run them.'); + ..addFlag( + 'dry-run', + negatable: false, + help: + 'Prints the commands that would be executed, but does not run them.', + ); final argResults = parser.parse(arguments); _isDryRun = argResults['dry-run'] as bool; _setupLogging(); log( - styleBold - .wrap('Flutter Monorepo Update Script Started: ${DateTime.now()}'), - stdout); + styleBold.wrap( + 'Flutter Monorepo Update Script Started: ${DateTime.now()}', + ), + stdout, + ); log(blue.wrap('Log file: ${_logFile.path}')!, stdout); if (_isDryRun) { @@ -52,15 +56,19 @@ class ReleaseScriptRunner { final packages = await _getWorkspacePackages(); if (packages.isEmpty) { - log(yellow.wrap('No packages found in the root pubspec.yaml workspace.'), - stdout); + log( + yellow.wrap('No packages found in the root pubspec.yaml workspace.'), + stdout, + ); exit(0); } log( - blue.wrap( - 'Found ${packages.length} Flutter project(s): ${packages.join(', ')}'), - stdout); + blue.wrap( + 'Found ${packages.length} Flutter project(s): ${packages.join(', ')}', + ), + stdout, + ); final failedProjects = []; for (final packagePath in packages) { @@ -73,9 +81,11 @@ class ReleaseScriptRunner { _printSummary(packages.length, failedProjects); log( - styleBold.wrap( - '\nFlutter Monorepo Update Script Completed: ${DateTime.now()}'), - stdout); + styleBold.wrap( + '\nFlutter Monorepo Update Script Completed: ${DateTime.now()}', + ), + stdout, + ); if (failedProjects.isNotEmpty) { exit(1); @@ -167,22 +177,28 @@ class ReleaseScriptRunner { log(blue.wrap('Updating SDK constraints to use Dart $dartVersion'), stdout); if (!_isDryRun) { if (!await _updateSdkConstraints(projectPath, dartVersion)) { - log(red.wrap('Failed to update SDK constraints for $projectName'), - stderr); + log( + red.wrap('Failed to update SDK constraints for $projectName'), + stderr, + ); return false; } } final commands = [ - Command('dart analyze', 'Running dart analyze...', 'dart', - ['analyze', '--fatal-infos', '--fatal-warnings']), + Command('dart analyze', 'Running dart analyze...', 'dart', [ + 'analyze', + '--fatal-infos', + '--fatal-warnings', + ]), Command('dart format', 'Running dart format...', 'dart', ['format', '.']), ]; final testDir = Directory(p.join(projectPath, 'test')); if (projectName != 'material_3_demo' && testDir.existsSync()) { commands.add( - Command('flutter test', 'Running tests...', 'flutter', ['test'])); + Command('flutter test', 'Running tests...', 'flutter', ['test']), + ); } for (final command in commands) { @@ -229,7 +245,9 @@ class ReleaseScriptRunner { } Future _updateSdkConstraints( - String projectDir, String versionString) async { + String projectDir, + String versionString, + ) async { final pubspecFile = File(p.join(projectDir, 'pubspec.yaml')); if (!pubspecFile.existsSync()) { log(red.wrap('pubspec.yaml not found in $projectDir'), stderr); @@ -245,44 +263,61 @@ class ReleaseScriptRunner { await pubspecFile.writeAsString(editor.toString()); log( - blue.wrap( - 'Updated Dart SDK constraint in $projectDir to: $newConstraint'), - stdout); + blue.wrap( + 'Updated Dart SDK constraint in $projectDir to: $newConstraint', + ), + stdout, + ); return true; } catch (e) { - log(red.wrap('Failed to update SDK constraint in $projectDir: $e'), - stderr); + log( + red.wrap('Failed to update SDK constraint in $projectDir: $e'), + stderr, + ); return false; } } - Future<(bool, String)> _runCommand(String executable, List arguments, - {String? workingDirectory}) async { + Future<(bool, String)> _runCommand( + String executable, + List arguments, { + String? workingDirectory, + }) async { final commandString = '$executable ${arguments.join(' ')}'; if (_isDryRun) { log( - yellow.wrap( - ' [DRY RUN] Would execute: `$commandString` in `${workingDirectory ?? '.'}`'), - stdout); + yellow.wrap( + ' [DRY RUN] Would execute: `$commandString` in `${workingDirectory ?? '.'}`', + ), + stdout, + ); return (true, ''); } - final process = await Process.start(executable, arguments, - workingDirectory: workingDirectory, runInShell: true); + final process = await Process.start( + executable, + arguments, + workingDirectory: workingDirectory, + runInShell: true, + ); StringBuffer output = StringBuffer(''); - final stdoutFuture = - process.stdout.transform(SystemEncoding().decoder).forEach((line) { - log(line, stdout); - if (!_isOnlyWhitespace(line)) output.writeln('${line.trim().padLeft(2)}'); - }); - - final stderrFuture = - process.stderr.transform(SystemEncoding().decoder).forEach((line) { - log(red.wrap(line), stderr); - if (!_isOnlyWhitespace(line)) output.writeln('${line.trim().padLeft(2)}'); - }); + final stdoutFuture = process.stdout + .transform(SystemEncoding().decoder) + .forEach((line) { + log(line, stdout); + if (!_isOnlyWhitespace(line)) + output.writeln('${line.trim().padLeft(2)}'); + }); + + final stderrFuture = process.stderr + .transform(SystemEncoding().decoder) + .forEach((line) { + log(red.wrap(line), stderr); + if (!_isOnlyWhitespace(line)) + output.writeln('${line.trim().padLeft(2)}'); + }); await Future.wait([stdoutFuture, stderrFuture]);