From 12df07e1d074112f688980207336090c3e7111e0 Mon Sep 17 00:00:00 2001 From: Hidenori Matsubayashi Date: Wed, 13 Oct 2021 16:55:20 +0900 Subject: [PATCH] Merge the latest create.dart from flutter-tizen (#61) Merged from https://github.com/flutter-tizen/flutter-tizen/commit/8b20d223859a81e3685439850c0f0ec77a612aaf --- lib/commands/create.dart | 167 +++++++++----- templates/template_manifest.json | 385 ------------------------------- 2 files changed, 114 insertions(+), 438 deletions(-) delete mode 100644 templates/template_manifest.json diff --git a/lib/commands/create.dart b/lib/commands/create.dart index 9d3fb55..4d6d589 100644 --- a/lib/commands/create.dart +++ b/lib/commands/create.dart @@ -6,6 +6,8 @@ // @dart = 2.8 +import 'dart:io'; + import 'package:file/file.dart'; import 'package:flutter_tools/src/base/common.dart'; import 'package:flutter_tools/src/base/file_system.dart'; @@ -14,78 +16,132 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/create.dart'; import 'package:flutter_tools/src/flutter_project_metadata.dart'; import 'package:flutter_tools/src/globals.dart' as globals; -import 'package:flutter_tools/src/project.dart'; import 'package:flutter_tools/src/runner/flutter_command.dart'; import 'package:flutter_tools/src/template.dart'; -import '../elinux_plugins.dart'; +const List _kAvailablePlatforms = [ + 'elinux', + 'ios', + 'android', + 'windows', + 'linux', + 'macos', + 'web', +]; class ELinuxCreateCommand extends CreateCommand { ELinuxCreateCommand({bool verboseHelp = false}) : super(verboseHelp: verboseHelp); @override - void printUsage() { - super.printUsage(); - // TODO(swift-kim): I couldn't find a proper way to override the --platforms - // option without copying the entire class. This message is a workaround. - print( - 'You don\'t have to specify "elinux" as a target platform with ' - '"--platforms" option. It is automatically added by default.', + void addPlatformsOptions({String customHelp}) { + argParser.addMultiOption( + 'platforms', + help: customHelp, + defaultsTo: _kAvailablePlatforms, + allowed: _kAvailablePlatforms, ); } - /// See: - /// - [CreateCommand.runCommand] in `create.dart` - /// - [CreateCommand._getProjectType] in `create.dart` (generatePlugin) - Future runInternal() async { + @override + Future renderTemplate( + String templateName, + Directory directory, + Map context, { + bool overwrite = false, + }) async { + // Disables https://github.com/flutter/flutter/pull/59706 by setting + // templateManifest to null. + final Template template = await Template.fromName( + templateName, + fileSystem: globals.fs, + logger: globals.logger, + templateRenderer: globals.templateRenderer, + templateManifest: null, + ); + return template.render(directory, context, overwriteExisting: overwrite); + } + + @override + Future renderMerged( + List names, + Directory directory, + Map context, { + bool overwrite = false, + }) async { + // Disables https://github.com/flutter/flutter/pull/59706 by setting + // templateManifest to null. + final Template template = await Template.merged( + names, + directory, + fileSystem: globals.fs, + logger: globals.logger, + templateRenderer: globals.templateRenderer, + templateManifest: null, + ); + return template.render(directory, context, overwriteExisting: overwrite); + } + + /// See: [CreateCommand._getProjectType] in `create.dart` + bool get _shouldGeneratePlugin { + if (argResults['template'] != null) { + return stringArg('template') == 'plugin'; + } else if (projectDir.existsSync() && projectDir.listSync().isNotEmpty) { + return determineTemplateType() == FlutterProjectType.plugin; + } + return false; + } + + /// See: [CreateCommand.runCommand] in `create.dart` + Future _runCommand() async { final FlutterCommandResult result = await super.runCommand(); - if (result != FlutterCommandResult.success() || argResults.rest.isEmpty) { + if (result != FlutterCommandResult.success()) { return result; } - final bool generatePlugin = argResults['template'] != null - ? stringArg('template') == - flutterProjectTypeToString(FlutterProjectType.plugin) - : determineTemplateType() == FlutterProjectType.plugin; - if (generatePlugin) { - // Assume that pubspec.yaml uses the multi-platforms plugin format if the - // file already exists. - // TODO(swift-kim): Skip this message if elinux already exists in pubspec. + if (_shouldGeneratePlugin) { + final String relativePluginPath = + globals.fs.path.normalize(globals.fs.path.relative(projectDirPath)); globals.printStatus( - 'The `pubspec.yaml` under the project directory must be updated to support ELinux.\n' - 'Add below lines to under the `platforms:` key.', - emphasis: true, + 'Make sure your $relativePluginPath/pubspec.yaml contains the following lines.', color: TerminalColor.yellow, ); - final Map templateContext = createTemplateContext( + final Map templateContext = createTemplateContext( organization: '', projectName: projectName, flutterRoot: '', ); globals.printStatus( - '\nelinux:\n' - ' pluginClass: ${templateContext['pluginClass'] as String}\n' - ' fileName: ${projectName}_plugin.h', - emphasis: true, + '\nflutter:\n' + ' plugin:\n' + ' platforms:\n' + ' elinux:\n' + ' pluginClass: ${templateContext['pluginClass'] as String}\n', color: TerminalColor.blue, ); globals.printStatus(''); } - if (boolArg('pub')) { - final FlutterProject project = FlutterProject.fromDirectory(projectDir); - await ensureReadyForELinuxTooling(project); - if (project.hasExampleApp) { - await ensureReadyForELinuxTooling(project.example); - } - } return result; } - /// See: [Template.render] in `template.dart` + /// See: + /// - [CreateCommand._generatePlugin] in `create.dart` + /// - [Template.render] in `template.dart` @override Future runCommand() async { + if (argResults.rest.isEmpty) { + return super.runCommand(); + } + final List platforms = stringsArg('platforms'); + bool shouldRenderELinuxTemplate = platforms.contains('elinux'); + if (_shouldGeneratePlugin && !argResults.wasParsed('platforms')) { + shouldRenderELinuxTemplate = false; + } + if (!shouldRenderELinuxTemplate) { + return super.runCommand(); + } + // The template directory that the flutter tools search for available // templates cannot be overriden because the implementation is private. // So we have to copy eLinux templates into the directory manually. @@ -96,22 +152,13 @@ class ELinuxCreateCommand extends CreateCommand { if (!eLinuxTemplates.existsSync()) { throwToolExit('Could not locate eLinux templates.'); } - final File eLinuxTemplateManifest = - eLinuxTemplates.childFile('template_manifest.json'); - final Directory templates = globals.fs .directory(Cache.flutterRoot) .childDirectory('packages') .childDirectory('flutter_tools') .childDirectory('templates'); - final File templateManifest = templates.childFile('template_manifest.json'); + _runGitClean(templates); - // This is required due to: https://github.com/flutter/flutter/pull/59706 - // TODO(swift-kim): Find any better workaround. One option is to override - // renderTemplate() but it may result in additional complexity. - eLinuxTemplateManifest.copySync(templateManifest.path); - - final List created = []; try { for (final Directory projectType in eLinuxTemplates.listSync().whereType()) { @@ -136,13 +183,27 @@ class ELinuxCreateCommand extends CreateCommand { copyDirectory(sourceFlutter, dest.childDirectory('flutter')); copyDirectory(sourceRunnerCommon, dest.childDirectory('runner')); } - created.add(dest); } - return await runInternal(); + return await _runCommand(); } finally { - for (final Directory template in created) { - template.deleteSync(recursive: true); - } + _runGitClean(templates); + } + } + + void _runGitClean(Directory directory) { + ProcessResult result = globals.processManager.runSync( + ['git', 'restore', '.'], + workingDirectory: directory.path, + ); + if (result.exitCode != 0) { + throwToolExit('Failed to run git restore: ${result.stderr}'); + } + result = globals.processManager.runSync( + ['git', 'clean', '-df', '.'], + workingDirectory: directory.path, + ); + if (result.exitCode != 0) { + throwToolExit('Failed to run git clean: ${result.stderr}'); } } } diff --git a/templates/template_manifest.json b/templates/template_manifest.json deleted file mode 100644 index 340a282..0000000 --- a/templates/template_manifest.json +++ /dev/null @@ -1,385 +0,0 @@ -{ - "version": 1.0, - "_comment": "A listing of all possible template output files.", - "files": [ - "templates/app/elinux.tmpl/.gitignore", - "templates/app/elinux.tmpl/CMakeLists.txt.tmpl", - "templates/app/elinux.tmpl/flutter/CMakeLists.txt", - "templates/app/elinux.tmpl/runner/CMakeLists.txt", - "templates/app/elinux.tmpl/runner/command_options.h", - "templates/app/elinux.tmpl/runner/flutter_embedder_options.h", - "templates/app/elinux.tmpl/runner/flutter_window.cc", - "templates/app/elinux.tmpl/runner/flutter_window.h", - "templates/app/elinux.tmpl/runner/main.cc", - "templates/plugin/elinux.tmpl/.gitignore", - "templates/plugin/elinux.tmpl/CMakeLists.txt.tmpl", - "templates/plugin/elinux.tmpl/include/projectName.tmpl/pluginClassSnakeCase.h.tmpl", - "templates/plugin/elinux.tmpl/pluginClassSnakeCase.cc.tmpl", - - "templates/app/lib/main.dart.tmpl", - "templates/app/pubspec.yaml.tmpl", - "templates/app/README.md.tmpl", - "templates/app/test/widget_test.dart.tmpl", - "templates/app/winuwp.tmpl/.gitignore", - - "templates/app_shared/.gitignore.tmpl", - "templates/app_shared/.idea/libraries/Dart_SDK.xml.tmpl", - "templates/app_shared/.idea/libraries/KotlinJavaRuntime.xml.tmpl", - "templates/app_shared/.idea/modules.xml.tmpl", - "templates/app_shared/.idea/runConfigurations/main_dart.xml.tmpl", - "templates/app_shared/.idea/workspace.xml.tmpl", - "templates/app_shared/.metadata.tmpl", - "templates/app_shared/analysis_options.yaml.tmpl", - "templates/app_shared/android-java.tmpl/app/build.gradle.tmpl", - "templates/app_shared/android-java.tmpl/app/src/main/java/androidIdentifier/MainActivity.java.tmpl", - "templates/app_shared/android-java.tmpl/build.gradle", - "templates/app_shared/android-java.tmpl/projectName_android.iml.tmpl", - "templates/app_shared/android-kotlin.tmpl/app/build.gradle.tmpl", - "templates/app_shared/android-kotlin.tmpl/app/src/main/kotlin/androidIdentifier/MainActivity.kt.tmpl", - "templates/app_shared/android-kotlin.tmpl/build.gradle", - "templates/app_shared/android-kotlin.tmpl/projectName_android.iml.tmpl", - "templates/app_shared/android.tmpl/.gitignore", - "templates/app_shared/android.tmpl/app/src/debug/AndroidManifest.xml.tmpl", - "templates/app_shared/android.tmpl/app/src/main/AndroidManifest.xml.tmpl", - "templates/app_shared/android.tmpl/app/src/main/res/drawable-v21/launch_background.xml", - "templates/app_shared/android.tmpl/app/src/main/res/drawable/launch_background.xml", - "templates/app_shared/android.tmpl/app/src/main/res/mipmap-hdpi/ic_launcher.png", - "templates/app_shared/android.tmpl/app/src/main/res/mipmap-mdpi/ic_launcher.png", - "templates/app_shared/android.tmpl/app/src/main/res/mipmap-xhdpi/ic_launcher.png", - "templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxhdpi/ic_launcher.png", - "templates/app_shared/android.tmpl/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png", - "templates/app_shared/android.tmpl/app/src/main/res/values-night/styles.xml", - "templates/app_shared/android.tmpl/app/src/main/res/values/styles.xml", - "templates/app_shared/android.tmpl/app/src/profile/AndroidManifest.xml.tmpl", - "templates/app_shared/android.tmpl/gradle.properties.tmpl", - "templates/app_shared/android.tmpl/gradle/wrapper/gradle-wrapper.properties", - "templates/app_shared/android.tmpl/settings.gradle", - "templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/project.pbxproj.tmpl", - "templates/app_shared/ios-objc.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme", - "templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.h", - "templates/app_shared/ios-objc.tmpl/Runner/AppDelegate.m", - "templates/app_shared/ios-objc.tmpl/Runner/main.m", - "templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/project.pbxproj.tmpl", - "templates/app_shared/ios-swift.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme", - "templates/app_shared/ios-swift.tmpl/Runner/AppDelegate.swift", - "templates/app_shared/ios-swift.tmpl/Runner/Runner-Bridging-Header.h", - "templates/app_shared/ios.tmpl/.gitignore", - "templates/app_shared/ios.tmpl/Flutter/AppFrameworkInfo.plist", - "templates/app_shared/ios.tmpl/Flutter/Debug.xcconfig", - "templates/app_shared/ios.tmpl/Flutter/Release.xcconfig", - "templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata", - "templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist", - "templates/app_shared/ios.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings", - "templates/app_shared/ios.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme", - "templates/app_shared/ios.tmpl/Runner.xcworkspace/contents.xcworkspacedata", - "templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist", - "templates/app_shared/ios.tmpl/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png", - "templates/app_shared/ios.tmpl/Runner/Assets.xcassets/LaunchImage.imageset/README.md", - "templates/app_shared/ios.tmpl/Runner/Base.lproj/LaunchScreen.storyboard", - "templates/app_shared/ios.tmpl/Runner/Base.lproj/Main.storyboard", - "templates/app_shared/ios.tmpl/Runner/Info.plist.tmpl", - "templates/app_shared/linux.tmpl/.gitignore", - "templates/app_shared/linux.tmpl/CMakeLists.txt.tmpl", - "templates/app_shared/linux.tmpl/flutter/CMakeLists.txt", - "templates/app_shared/linux.tmpl/main.cc", - "templates/app_shared/linux.tmpl/my_application.cc", - "templates/app_shared/linux.tmpl/my_application.cc.tmpl", - "templates/app_shared/linux.tmpl/my_application.h", - "templates/app_shared/macos.tmpl/.gitignore", - "templates/app_shared/macos.tmpl/Flutter/Flutter-Debug.xcconfig", - "templates/app_shared/macos.tmpl/Flutter/Flutter-Release.xcconfig", - "templates/app_shared/macos.tmpl/Runner.xcodeproj/project.pbxproj.tmpl", - "templates/app_shared/macos.tmpl/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist", - "templates/app_shared/macos.tmpl/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme.tmpl", - "templates/app_shared/macos.tmpl/Runner.xcworkspace/contents.xcworkspacedata", - "templates/app_shared/macos.tmpl/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist", - "templates/app_shared/macos.tmpl/Runner/AppDelegate.swift", - "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png", - "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png", - "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png", - "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png", - "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png", - "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png", - "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png", - "templates/app_shared/macos.tmpl/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json", - "templates/app_shared/macos.tmpl/Runner/Base.lproj/MainMenu.xib", - "templates/app_shared/macos.tmpl/Runner/Configs/AppInfo.xcconfig.tmpl", - "templates/app_shared/macos.tmpl/Runner/Configs/Debug.xcconfig", - "templates/app_shared/macos.tmpl/Runner/Configs/Release.xcconfig", - "templates/app_shared/macos.tmpl/Runner/Configs/Warnings.xcconfig", - "templates/app_shared/macos.tmpl/Runner/DebugProfile.entitlements", - "templates/app_shared/macos.tmpl/Runner/Info.plist", - "templates/app_shared/macos.tmpl/Runner/MainFlutterWindow.swift", - "templates/app_shared/macos.tmpl/Runner/Release.entitlements", - "templates/app_shared/projectName.iml.tmpl", - "templates/app_shared/web/favicon.png.copy.tmpl", - "templates/app_shared/web/icons/Icon-192.png.copy.tmpl", - "templates/app_shared/web/icons/Icon-512.png.copy.tmpl", - "templates/app_shared/web/icons/Icon-maskable-192.png.img.tmpl", - "templates/app_shared/web/icons/Icon-maskable-512.png.img.tmpl", - "templates/app_shared/web/index.html.tmpl", - "templates/app_shared/web/manifest.json.tmpl", - "templates/app_shared/windows.tmpl/.gitignore", - "templates/app_shared/windows.tmpl/CMakeLists.txt.tmpl", - "templates/app_shared/windows.tmpl/flutter/CMakeLists.txt", - "templates/app_shared/windows.tmpl/runner/CMakeLists.txt", - "templates/app_shared/windows.tmpl/runner/flutter_window.cpp", - "templates/app_shared/windows.tmpl/runner/flutter_window.h", - "templates/app_shared/windows.tmpl/runner/main.cpp.tmpl", - "templates/app_shared/windows.tmpl/runner/resource.h", - "templates/app_shared/windows.tmpl/runner/resources/app_icon.ico.img.tmpl", - "templates/app_shared/windows.tmpl/runner/runner.exe.manifest", - "templates/app_shared/windows.tmpl/runner/Runner.rc.tmpl", - "templates/app_shared/windows.tmpl/runner/run_loop.cpp", - "templates/app_shared/windows.tmpl/runner/run_loop.h", - "templates/app_shared/windows.tmpl/runner/utils.cpp", - "templates/app_shared/windows.tmpl/runner/utils.h", - "templates/app_shared/windows.tmpl/runner/win32_window.cpp", - "templates/app_shared/windows.tmpl/runner/win32_window.h", - "templates/app_shared/winuwp.tmpl/CMakeLists.txt", - "templates/app_shared/winuwp.tmpl/flutter/CMakeLists.txt", - "templates/app_shared/winuwp.tmpl/project_version", - "templates/app_shared/winuwp.tmpl/runner_uwp/appxmanifest.in", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/LargeTile.scale-100.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/LargeTile.scale-125.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/LargeTile.scale-150.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/LargeTile.scale-200.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/LargeTile.scale-400.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/LockScreenLogo.scale-200.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/SmallTile.scale-100.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/SmallTile.scale-125.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/SmallTile.scale-150.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/SmallTile.scale-200.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/SmallTile.scale-400.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/SplashScreen.scale-100.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/SplashScreen.scale-125.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/SplashScreen.scale-150.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/SplashScreen.scale-200.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/SplashScreen.scale-400.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square150x150Logo.scale-100.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square150x150Logo.scale-125.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square150x150Logo.scale-150.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square150x150Logo.scale-200.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square150x150Logo.scale-400.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-16.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-256.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-32.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.altform-unplated_targetsize-48.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.scale-100.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.scale-125.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.scale-150.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.scale-200.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.scale-400.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-16.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-24.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-256.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-32.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Square44x44Logo.targetsize-48.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/StoreLogo.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/StoreLogo.scale-100.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/StoreLogo.scale-125.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/StoreLogo.scale-150.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/StoreLogo.scale-200.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/StoreLogo.scale-400.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/Wide310x150Logo.scale-200.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/WideTile.scale-100.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/WideTile.scale-125.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/WideTile.scale-150.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/WideTile.scale-200.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Assets/WideTile.scale-400.png.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/CMakeLists.txt.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/CMakeSettings.json", - "templates/app_shared/winuwp.tmpl/runner_uwp/flutter_frameworkview.cpp", - "templates/app_shared/winuwp.tmpl/runner_uwp/main.cpp", - "templates/app_shared/winuwp.tmpl/runner_uwp/resources.pri.img.tmpl", - "templates/app_shared/winuwp.tmpl/runner_uwp/Windows_TemporaryKey.pfx.img.tmpl", - - "templates/cocoapods/Podfile-ios-objc", - "templates/cocoapods/Podfile-ios-swift", - "templates/cocoapods/Podfile-macos", - - "templates/module/android/deferred_component/build.gradle.tmpl", - "templates/module/android/deferred_component/src/main/AndroidManifest.xml.tmpl", - "templates/module/android/gradle/build.gradle.copy.tmpl", - "templates/module/android/gradle/gradle.properties.tmpl", - "templates/module/android/host_app_common/app.tmpl/build.gradle.tmpl", - "templates/module/android/host_app_common/app.tmpl/src/main/AndroidManifest.xml.tmpl", - "templates/module/android/host_app_common/app.tmpl/src/main/java/androidIdentifier/host/MainActivity.java.tmpl", - "templates/module/android/host_app_common/app.tmpl/src/main/res/drawable/launch_background.xml", - "templates/module/android/host_app_common/app.tmpl/src/main/res/mipmap-hdpi/ic_launcher.png", - "templates/module/android/host_app_common/app.tmpl/src/main/res/values/styles.xml", - "templates/module/android/host_app_editable/settings.gradle.copy.tmpl", - "templates/module/android/host_app_ephemeral/settings.gradle.copy.tmpl", - "templates/module/android/library/Flutter.tmpl/build.gradle.tmpl", - "templates/module/android/library/Flutter.tmpl/flutter.iml.copy.tmpl", - "templates/module/android/library/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl", - "templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/Flutter.java.tmpl", - "templates/module/android/library/Flutter.tmpl/src/main/java/io/flutter/facade/FlutterFragment.java.tmpl", - "templates/module/android/library/include_flutter.groovy.copy.tmpl", - "templates/module/android/library/settings.gradle.copy.tmpl", - "templates/module/android/library_new_embedding/Flutter.tmpl/build.gradle.tmpl", - "templates/module/android/library_new_embedding/Flutter.tmpl/flutter.iml.copy.tmpl", - "templates/module/android/library_new_embedding/Flutter.tmpl/src/main/AndroidManifest.xml.tmpl", - "templates/module/android/library_new_embedding/include_flutter.groovy.copy.tmpl", - "templates/module/android/library_new_embedding/settings.gradle.copy.tmpl", - "templates/module/common/.gitignore.tmpl", - "templates/module/common/.idea/libraries/Dart_SDK.xml.tmpl", - "templates/module/common/.idea/modules.xml.tmpl", - "templates/module/common/.idea/workspace.xml.tmpl", - "templates/module/common/.metadata.tmpl", - "templates/module/common/analysis_options.yaml.tmpl", - "templates/module/common/lib/main.dart.tmpl", - "templates/module/common/projectName.iml.tmpl", - "templates/module/common/projectName_android.iml.tmpl", - "templates/module/common/pubspec.yaml.tmpl", - "templates/module/common/README.md.tmpl", - "templates/module/common/test/widget_test.dart.tmpl", - "templates/module/ios/host_app_ephemeral/Config.tmpl/Debug.xcconfig", - "templates/module/ios/host_app_ephemeral/Config.tmpl/Flutter.xcconfig", - "templates/module/ios/host_app_ephemeral/Config.tmpl/Release.xcconfig", - "templates/module/ios/host_app_ephemeral/Flutter/engine/Flutter.podspec.tmpl", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.h", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/AppDelegate.m", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Contents.json", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/Contents.json", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Assets.xcassets/LaunchImage.imageset/README.md", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/LaunchScreen.storyboard", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Base.lproj/Main.storyboard", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/Info.plist.tmpl", - "templates/module/ios/host_app_ephemeral/Runner.tmpl/main.m", - "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.pbxproj.tmpl", - "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/contents.xcworkspacedata", - "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist", - "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings", - "templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/xcshareddata/xcschemes/Runner.xcscheme", - "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/contents.xcworkspacedata", - "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/xcshareddata/IDEWorkspaceChecks.plist", - "templates/module/ios/host_app_ephemeral/Runner.xcworkspace.tmpl/xcshareddata/WorkspaceSettings.xcsettings", - "templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Debug.xcconfig", - "templates/module/ios/host_app_ephemeral_cocoapods/Config.tmpl/Release.xcconfig", - "templates/module/ios/host_app_ephemeral_cocoapods/Podfile.copy.tmpl", - "templates/module/ios/host_app_ephemeral_cocoapods/Runner.tmpl/AppDelegate.m", - "templates/module/ios/library/Flutter.tmpl/AppFrameworkInfo.plist", - "templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl", - "templates/module/ios/library/Flutter.tmpl/projectName.podspec.tmpl", - "templates/module/ios/library/Flutter.tmpl/README.md", - "templates/module/README.md", - - "templates/package/.gitignore.tmpl", - "templates/package/.idea/libraries/Dart_SDK.xml.tmpl", - "templates/package/.idea/modules.xml.tmpl", - "templates/package/.idea/workspace.xml.tmpl", - "templates/package/.metadata.tmpl", - "templates/package/analysis_options.yaml.tmpl", - "templates/package/CHANGELOG.md.tmpl", - "templates/package/lib/projectName.dart.tmpl", - "templates/package/LICENSE.tmpl", - "templates/package/projectName.iml.tmpl", - "templates/package/pubspec.yaml.tmpl", - "templates/package/README.md.tmpl", - "templates/package/test/projectName_test.dart.tmpl", - - "templates/plugin/.gitignore.tmpl", - "templates/plugin/.idea/libraries/Dart_SDK.xml.tmpl", - "templates/plugin/.idea/modules.xml.tmpl", - "templates/plugin/.idea/runConfigurations/example_lib_main_dart.xml.tmpl", - "templates/plugin/.idea/workspace.xml.tmpl", - "templates/plugin/.metadata.tmpl", - "templates/plugin/analysis_options.yaml.tmpl", - "templates/plugin/android-java.tmpl/build.gradle.tmpl", - "templates/plugin/android-java.tmpl/projectName_android.iml.tmpl", - "templates/plugin/android-java.tmpl/src/main/java/androidIdentifier/pluginClass.java.tmpl", - "templates/plugin/android-kotlin.tmpl/build.gradle.tmpl", - "templates/plugin/android-kotlin.tmpl/projectName_android.iml.tmpl", - "templates/plugin/android-kotlin.tmpl/src/main/kotlin/androidIdentifier/pluginClass.kt.tmpl", - "templates/plugin/android.tmpl/.gitignore", - "templates/plugin/android.tmpl/gradle/wrapper/gradle-wrapper.properties", - "templates/plugin/android.tmpl/gradle.properties.tmpl", - "templates/plugin/android.tmpl/settings.gradle.tmpl", - "templates/plugin/android.tmpl/src/main/AndroidManifest.xml.tmpl", - "templates/plugin/CHANGELOG.md.tmpl", - "templates/plugin/ios-objc.tmpl/Classes/pluginClass.h.tmpl", - "templates/plugin/ios-objc.tmpl/Classes/pluginClass.m.tmpl", - "templates/plugin/ios-objc.tmpl/projectName.podspec.tmpl", - "templates/plugin/ios-swift.tmpl/Classes/pluginClass.h.tmpl", - "templates/plugin/ios-swift.tmpl/Classes/pluginClass.m.tmpl", - "templates/plugin/ios-swift.tmpl/Classes/SwiftpluginClass.swift.tmpl", - "templates/plugin/ios-swift.tmpl/projectName.podspec.tmpl", - "templates/plugin/ios.tmpl/.gitignore", - "templates/plugin/ios.tmpl/Assets/.gitkeep", - "templates/plugin/lib/projectName.dart.tmpl", - "templates/plugin/LICENSE.tmpl", - "templates/plugin/linux.tmpl/CMakeLists.txt.tmpl", - "templates/plugin/linux.tmpl/include/projectName.tmpl/pluginClassSnakeCase.h.tmpl", - "templates/plugin/linux.tmpl/pluginClassSnakeCase.cc.tmpl", - "templates/plugin/macos.tmpl/Classes/pluginClass.swift.tmpl", - "templates/plugin/macos.tmpl/projectName.podspec.tmpl", - "templates/plugin/projectName.iml.tmpl", - "templates/plugin/pubspec.yaml.tmpl", - "templates/plugin/README.md.tmpl", - "templates/plugin/test/projectName_test.dart.tmpl", - "templates/plugin/windows.tmpl/.gitignore", - "templates/plugin/windows.tmpl/CMakeLists.txt.tmpl", - "templates/plugin/windows.tmpl/include/projectName.tmpl/pluginClassSnakeCase.h.tmpl", - "templates/plugin/windows.tmpl/pluginClassSnakeCase.cpp.tmpl", - "templates/plugin/lib/projectName_web.dart.tmpl", - - "templates/skeleton/assets/images/2.0x/flutter_logo.png.img.tmpl", - "templates/skeleton/assets/images/3.0x/flutter_logo.png.img.tmpl", - "templates/skeleton/assets/images/flutter_logo.png.img.tmpl", - "templates/skeleton/l10n.yaml.tmpl", - "templates/skeleton/lib/main.dart.tmpl", - "templates/skeleton/lib/src/app.dart.tmpl", - "templates/skeleton/lib/src/sample_feature/sample_item.dart.tmpl", - "templates/skeleton/lib/src/sample_feature/sample_item_details_view.dart.tmpl", - "templates/skeleton/lib/src/sample_feature/sample_item_list_view.dart.tmpl", - "templates/skeleton/lib/src/localization/app_en.arb.tmpl", - "templates/skeleton/lib/src/settings/settings_controller.dart.tmpl", - "templates/skeleton/lib/src/settings/settings_service.dart.tmpl", - "templates/skeleton/lib/src/settings/settings_view.dart.tmpl", - "templates/skeleton/pubspec.yaml.tmpl", - "templates/skeleton/README.md.tmpl", - "templates/skeleton/test/implementation_test.dart.test.tmpl", - "templates/skeleton/test/unit_test.dart.tmpl", - "templates/skeleton/test/widget_test.dart.tmpl" - ] -} \ No newline at end of file