From 3b390c52840785190b45166931489c181b68c5bf Mon Sep 17 00:00:00 2001 From: Gray Mackall <34871572+gmackall@users.noreply.github.com> Date: Thu, 21 Mar 2024 16:24:09 -0700 Subject: [PATCH] Add a `--no-gradle-generation` mode to the `generate_gradle_lockfiles.dart` script (#145568) The script currently overwrites existing `settings.gradle`, `build.gradle`, and `gradle-wrapper.properties` files in the directories it processes. This mode makes it not do that, and just generate the lockfiles themselves. Related to https://github.com/flutter/flutter/pull/145564#r1371888460 --- dev/tools/bin/generate_gradle_lockfiles.dart | 40 ++++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/dev/tools/bin/generate_gradle_lockfiles.dart b/dev/tools/bin/generate_gradle_lockfiles.dart index 44da2601731..54d19ac34aa 100644 --- a/dev/tools/bin/generate_gradle_lockfiles.dart +++ b/dev/tools/bin/generate_gradle_lockfiles.dart @@ -8,16 +8,38 @@ import 'dart:io'; +import 'package:args/args.dart'; import 'package:file/file.dart'; import 'package:file/local.dart'; import 'package:path/path.dart' as path; void main(List arguments) { - print( - "Usage: find . -type d -name 'android' | dart dev/tools/bin/generate_gradle_lockfiles.dart\n" - 'If you would rather enter the files manually, just run `dart dev/tools/bin/generate_gradle_lockfiles.dart`,\n' - "enter the absolute paths to the app's android directory, then press CTRL-D.\n" - ); + const String usageMessage = "Usage: find . -type d -name 'android' | dart dev/tools/bin/generate_gradle_lockfiles.dart\n" + 'If you would rather enter the files manually, just run `dart dev/tools/bin/generate_gradle_lockfiles.dart`,\n' + "enter the absolute paths to the app's android directory, then press CTRL-D.\n" + "If you don't wish to re-generate the settings.gradle, build.gradle, and gradle-wrapper.properties files,\n" + "add the flag '--no-gradle-generation'"; + + final ArgParser argParser = ArgParser() + ..addFlag( + 'gradle-generation', + help: 'Re-generate gradle files in each processed directory.', + defaultsTo: true, + ); + + ArgResults args; + try { + args = argParser.parse(arguments); + } on FormatException catch (error) { + stderr.writeln('${error.message}\n'); + stderr.writeln(usageMessage); + exit(1); + } + + print(usageMessage); + + /// Re-generate gradle files in each processed directory. + final bool gradleGeneration = (args['gradle-generation'] as bool?) ?? true; const FileSystem fileSystem = LocalFileSystem(); final List androidDirectories = getFilesFromStdin(); @@ -86,9 +108,11 @@ void main(List arguments) { // noop } - rootBuildGradle.writeAsStringSync(rootGradleFileContent); - settingsGradle.writeAsStringSync(settingGradleFile); - wrapperGradle.writeAsStringSync(wrapperGradleFileContent); + if (gradleGeneration) { + rootBuildGradle.writeAsStringSync(rootGradleFileContent); + settingsGradle.writeAsStringSync(settingGradleFile); + wrapperGradle.writeAsStringSync(wrapperGradleFileContent); + } final String appDirectory = androidDirectory.parent.absolute.path;