Unverified Commit 33bb1faf authored by stuartmorgan's avatar stuartmorgan Committed by GitHub

Reland: Always use new plugin schema for plugin template (#49832)

Now that the new schema is supported on the stable channel, and the old
schema is considered legacy, the template should always create plugins
using the new schema.
parent 9de7787f
......@@ -50,15 +50,20 @@ Future<void> main() async {
final String pubspecString = pubspecFile.readAsStringSync();
final StringBuffer iosOnlyPubspec = StringBuffer();
bool inAndroidSection = false;
const String pluginPlatformIndentation = ' ';
for (final String line in pubspecString.split('\n')) {
if (line.startsWith(' androidPackage:')) {
// Skip everything in the Android section of the plugin platforms list.
if (line.startsWith('${pluginPlatformIndentation}android:')) {
inAndroidSection = true;
continue;
}
if (line.startsWith(' pluginClass:')) {
iosOnlyPubspec.write(' platforms:\n');
iosOnlyPubspec.write(' ios:\n');
iosOnlyPubspec.write(' pluginClass: IosOnlyPlugin\n');
if (inAndroidSection) {
if (line.startsWith('$pluginPlatformIndentation ')) {
continue;
} else {
inAndroidSection = false;
}
}
iosOnlyPubspec.write('$line\n');
}
......
......@@ -642,10 +642,6 @@ To edit platform code in an IDE see https://flutter.dev/developing-packages/#edi
'web': web,
'macos': macos,
'year': DateTime.now().year,
// For now, the new plugin schema is only used when a desktop plugin is
// enabled. Once the new schema is supported on stable, this should be
// removed, and the new schema should always be used.
'useNewPluginSchema': macos,
// If a desktop platform is included, add a workaround for #31366.
// When Linux and Windows are added, we will need this workaround again.
'includeTargetPlatformWorkaround': false,
......
......@@ -6,6 +6,7 @@ homepage:
environment:
sdk: ">=2.1.0 <3.0.0"
flutter: ">=1.10.0"
dependencies:
flutter:
......@@ -21,23 +22,9 @@ dev_dependencies:
# The following section is specific to Flutter.
flutter:
# This section identifies this Flutter project as a plugin project.
{{^useNewPluginSchema}}
# The androidPackage and pluginClass identifiers should not ordinarily
# be modified. They are used by the tooling to maintain consistency when
# adding or updating assets for this project.
plugin:
androidPackage: {{androidIdentifier}}
pluginClass: {{pluginClass}}
{{/useNewPluginSchema}}
{{#useNewPluginSchema}}
# The 'pluginClass' and Android 'package' identifiers should not ordinarily
# be modified. They are used by the tooling to maintain consistency when
# adding or updating assets for this project.
#
# NOTE: This new plugin description format is not supported on Flutter's
# stable channel as of 1.9.1. A plugin published using this format will not
# work for most clients until the next major stable release.
# However, it is required in order to declare macOS support.
plugin:
platforms:
android:
......@@ -45,9 +32,10 @@ flutter:
pluginClass: {{pluginClass}}
ios:
pluginClass: {{pluginClass}}
{{#macos}}
macos:
pluginClass: {{pluginClass}}
{{/useNewPluginSchema}}
{{/macos}}
# To add assets to your plugin package, add an assets section, like this:
# assets:
......
......@@ -645,6 +645,21 @@ void main() {
FeatureFlags: () => TestFeatureFlags(isMacOSEnabled: false),
});
testUsingContext('plugin uses new platform schema', () async {
Cache.flutterRoot = '../..';
when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision);
when(mockFlutterVersion.channel).thenReturn(frameworkChannel);
final CreateCommand command = CreateCommand();
final CommandRunner<void> runner = createTestCommandRunner(command);
await runner.run(<String>['create', '--no-pub', '--template=plugin', projectDir.path]);
final String pubspecContents = await globals.fs.directory(projectDir.path).childFile('pubspec.yaml').readAsString();
expect(pubspecContents.contains('platforms:'), true);
});
testUsingContext('has correct content and formatting with module template', () async {
Cache.flutterRoot = '../..';
when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment