in tool/plugin/lib/plugin.dart [445:528]
Future<int> doit() async {
if (isReleaseMode) {
if (argResults['unpack']) {
separator('Release mode (--release) implies --unpack');
}
if (!await performReleaseChecks(this)) {
return 1;
}
}
// Check to see if we should only be building a specific version.
String onlyVersion = argResults['only-version'];
var buildSpecs = specs;
if (onlyVersion != null && onlyVersion.isNotEmpty) {
buildSpecs = specs.where((spec) => spec.version == onlyVersion).toList();
if (buildSpecs.isEmpty) {
log("No spec found for version '$onlyVersion'");
return 1;
}
}
String minorNumber = argResults['minor'];
if (minorNumber != null) {
pluginCount = int.parse(minorNumber) - 1;
}
var result = 0;
for (var spec in buildSpecs) {
if (spec.channel != channel) {
continue;
}
if (!(isForIntelliJ && isForAndroidStudio)) {
// This is a little more complicated than I'd like because the default
// is to always do both.
if (isForAndroidStudio && !spec.isAndroidStudio) continue;
if (isForIntelliJ && spec.isAndroidStudio) continue;
}
pluginCount++;
if (spec.isDevChannel && !isDevChannel) {
spec.buildForMaster();
}
result = await spec.artifacts.provision(
rebuildCache:
isReleaseMode || argResults['unpack'] || buildSpecs.length > 1,
);
if (result != 0) {
return result;
}
separator('Building flutter-intellij.jar');
await removeAll('build');
log('spec.version: ${spec.version}');
result = await applyEdits(spec, () async {
return await externalBuildCommand(spec);
});
if (result != 0) {
log('applyEdits() returned ${result.toString()}');
return result;
}
try {
result = await savePluginArtifact(spec);
if (result != 0) {
return result;
}
} catch (ex) {
log("$ex");
return 1;
}
separator('Built artifact');
log(releasesFilePath(spec));
}
if (argResults['only-version'] == null) {
checkAndClearAppliedEditCommands();
}
return 0;
}