mirror of
https://github.com/flutter/packages.git
synced 2025-08-14 10:02:19 +08:00
Applied Gradle Plugins Declaratively for path_provider
(#7822)
Updated applying gradle plugins from usage of imperative apply to usage of declarative blocks {} apply. Intending on updating all android example apps under packages. Did one more as a proof of concept before doing more. More information on Flutter Gradle Plugin Apply [here](https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply) Partially addresses [#152656](https://github.com/flutter/flutter/issues/152656) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] page, which explains my responsibilities. - [x] I read and followed the [relevant style guides] and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages repo does use `dart format`.) - [x] I signed the [CLA]. - [x] The title of the PR starts with the name of the package surrounded by square brackets, e.g. `[shared_preferences]` - [x] I [linked to at least one issue that this PR fixes] in the description above. - [x] I updated `pubspec.yaml` with an appropriate new version according to the [pub versioning philosophy], or this PR is [exempt from version changes]. - [x] I updated `CHANGELOG.md` to add a description of the change, [following repository CHANGELOG style], or this PR is [exempt from CHANGELOG changes]. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/packages/blob/main/CONTRIBUTING.md [Tree Hygiene]: https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md [relevant style guides]: https://github.com/flutter/packages/blob/main/CONTRIBUTING.md#style [CLA]: https://cla.developers.google.com/ [Discord]: https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md [linked to at least one issue that this PR fixes]: https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview [pub versioning philosophy]: https://dart.dev/tools/pub/versioning [exempt from version changes]: https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#version [following repository CHANGELOG style]: https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changelog-style [exempt from CHANGELOG changes]: https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changelog [test-exempt]: https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#tests --------- Co-authored-by: Reid Baker <reidbaker@google.com>
This commit is contained in:
@ -202,7 +202,6 @@ class GradleCheckCommand extends PackageLoopingCommand {
|
||||
/// configuration that enables artifact hub env variable.
|
||||
@visibleForTesting
|
||||
static String exampleRootSettingsArtifactHubString = '''
|
||||
// See $artifactHubDocumentationString for more info.
|
||||
buildscript {
|
||||
repositories {
|
||||
maven {
|
||||
@ -216,6 +215,18 @@ buildscript {
|
||||
apply plugin: "com.google.cloud.artifactregistry.gradle-plugin"
|
||||
''';
|
||||
|
||||
/// String printed as a valid example of settings.gradle repository
|
||||
/// configuration that enables artifact hub env variable.
|
||||
/// GP stands for the gradle plugin method of flutter tooling inclusion.
|
||||
@visibleForTesting
|
||||
static String exampleSettingsArtifactHubStringGP = '''
|
||||
plugins {
|
||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||
// ...other plugins
|
||||
id "com.google.cloud.artifactregistry.gradle-plugin" version "2.2.1"
|
||||
}
|
||||
''';
|
||||
|
||||
/// Validates that [gradleLines] reads and uses a artifiact hub repository
|
||||
/// when ARTIFACT_HUB_REPOSITORY is set.
|
||||
///
|
||||
@ -228,6 +239,10 @@ apply plugin: "com.google.cloud.artifactregistry.gradle-plugin"
|
||||
r'classpath.*gradle\.plugin\.com\.google\.cloud\.artifactregistry:artifactregistry-gradle-plugin');
|
||||
final RegExp artifactRegistryPluginApplyRegex = RegExp(
|
||||
r'apply.*plugin.*com\.google\.cloud\.artifactregistry\.gradle-plugin');
|
||||
final RegExp artifactRegistryPluginApplyRegexGP = RegExp(
|
||||
r'id.*com\.google\.cloud\.artifactregistry\.gradle-plugin.*version.*\b\d+\.\d+\.\d+\b');
|
||||
final RegExp artifactRegistryPluginApplyDeclarativeRegex =
|
||||
RegExp(r'\bpluginManagement\b');
|
||||
|
||||
final bool documentationPresent = gradleLines
|
||||
.any((String line) => documentationPresentRegex.hasMatch(line));
|
||||
@ -235,17 +250,36 @@ apply plugin: "com.google.cloud.artifactregistry.gradle-plugin"
|
||||
.any((String line) => artifactRegistryDefinitionRegex.hasMatch(line));
|
||||
final bool artifactRegistryPluginApplied = gradleLines
|
||||
.any((String line) => artifactRegistryPluginApplyRegex.hasMatch(line));
|
||||
final bool declarativeArtifactRegistryApplied = gradleLines.any(
|
||||
(String line) => artifactRegistryPluginApplyRegexGP.hasMatch(line));
|
||||
final bool declarativePluginBlockApplied = gradleLines.any((String line) =>
|
||||
artifactRegistryPluginApplyDeclarativeRegex.hasMatch(line));
|
||||
|
||||
if (!(documentationPresent &&
|
||||
artifactRegistryDefined &&
|
||||
artifactRegistryPluginApplied)) {
|
||||
printError('Failed Artifact Hub validation. Include the following in '
|
||||
'example root settings.gradle:\n$exampleRootSettingsArtifactHubString');
|
||||
final bool imperativeArtifactRegistryApplied =
|
||||
artifactRegistryDefined && artifactRegistryPluginApplied;
|
||||
|
||||
final bool validArtifactConfiguration = documentationPresent &&
|
||||
(imperativeArtifactRegistryApplied ||
|
||||
declarativeArtifactRegistryApplied);
|
||||
|
||||
if (!validArtifactConfiguration) {
|
||||
printError('Failed Artifact Hub validation.');
|
||||
if (!documentationPresent) {
|
||||
printError(
|
||||
'The link to the Artifact Hub documentation is missing. Include the following in '
|
||||
'example root settings.gradle:\n// See $artifactHubDocumentationString for more info.');
|
||||
}
|
||||
if (artifactRegistryDefined ||
|
||||
artifactRegistryPluginApplied ||
|
||||
!declarativePluginBlockApplied) {
|
||||
printError('Include the following in '
|
||||
'example root settings.gradle:\n$exampleRootSettingsArtifactHubString');
|
||||
} else if (!declarativeArtifactRegistryApplied) {
|
||||
printError('Include the following in '
|
||||
'example root settings.gradle:\n$exampleSettingsArtifactHubStringGP');
|
||||
}
|
||||
}
|
||||
|
||||
return documentationPresent &&
|
||||
artifactRegistryDefined &&
|
||||
artifactRegistryPluginApplied;
|
||||
return validArtifactConfiguration;
|
||||
}
|
||||
|
||||
/// Validates the top-level build.gradle for an example app (e.g.,
|
||||
|
Reference in New Issue
Block a user