listPlugins method
Implementation
@override
Future<List<AndroidPlugin>> listPlugins() async {
// TODO: implement listPlugins
_cache.clear();
var result = await buildFile.search("classpath");
if (result.isEmpty) {
return [];
}
List<AndroidPlugin> plugins = [];
for (var element in result) {
var rawPlugin = element.line
.trim()
.replaceAll("classpath ", "")
.replaceAll("'", "")
.replaceAll('"', '');
if (rawPlugin != '') {
var parts = rawPlugin.split(":");
var pluginVersion = parts.removeLast();
var pluginName = parts.join(":");
if (pluginVersion.startsWith("\$")) {
var isVar = pluginVersion.startsWith("\$");
if (isVar) {
var resolveVersionResult = await buildFile
.search("ext.${pluginVersion.replaceAll("\$", "")}");
if (resolveVersionResult.isNotEmpty) {
var version = resolveVersionResult[0]
.line
.replaceAll(
"ext.${pluginVersion.replaceAll("\$", "")} = ", "")
.replaceAll("'", "")
.replaceAll('"', '');
pluginVersion = version;
}
}
}
var plugin = AndroidPlugin(pluginName, pluginVersion.trim());
plugins.add(plugin);
_cache[element.index] = plugin;
}
}
return plugins;
}