use of io.sloeber.core.api.Json.ArduinoPlatformToolVersion in project arduino-eclipse-plugin by Sloeber.
the class BoardsManager method install.
@SuppressWarnings("nls")
private static IStatus install(ArduinoPlatformVersion platformVersion, IProgressMonitor monitor) {
boolean forceDownload = false;
String name = platformVersion.getName();
String architecture = platformVersion.getArchitecture();
String version = platformVersion.getVersion().toString();
// Check if we're installed already
if (platformVersion.isInstalled()) {
// $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
System.out.println("reusing platform " + name + " " + architecture + "(" + version + ")");
return Status.OK_STATUS;
}
// Download platform archive
// $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
System.out.println("start installing platform " + name + " " + architecture + "(" + version + ")");
// $NON-NLS-1$
MyMultiStatus mstatus = new MyMultiStatus("Failed to install " + platformVersion.getName());
mstatus.addErrors(PackageManager.downloadAndInstall(platformVersion, forceDownload, monitor));
if (!mstatus.isOK()) {
// no use installing tools when the boards failed installing
return mstatus;
}
// keep a copy of the json file used at install
File packageFile = platformVersion.getParent().getParent().getPackageIndex().getJsonFile();
File copyToFile = platformVersion.getInstallPath().append(packageFile.getName()).toFile();
try {
Files.copy(packageFile.toPath(), copyToFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
e.printStackTrace();
}
ArduinoPackage referencingPkg = platformVersion.getParent().getParent();
for (ArduinoPlatformTooldDependency toolDependency : platformVersion.getToolsDependencies()) {
ArduinoPlatformToolVersion tool = referencingPkg.getTool(toolDependency.getName(), toolDependency.getVersion());
if (tool == null) {
// this is a tool provided by another platform
// and the referencing platform does not specify the installable info
// This means the package file of the referencing platform needs to be provided
ArduinoPackage pkg = getPackageByProvider(toolDependency.getPackager());
if (pkg != null) {
tool = pkg.getTool(toolDependency.getName(), toolDependency.getVersion());
}
}
if (tool == null) {
mstatus.add(new Status(IStatus.ERROR, Activator.getId(), Messages.Tool_no_valid_system.replace(Messages.KEY_TAG, toolDependency.getName())));
} else if (!tool.isInstalled()) {
ArduinoInstallable installable = tool.getInstallable();
if (installable != null) {
monitor.setTaskName(InstallProgress.getRandomMessage());
mstatus.addErrors(PackageManager.downloadAndInstall(installable, forceDownload, monitor));
}
}
}
WorkAround.applyKnownWorkArounds(platformVersion);
// $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
System.out.println("done installing platform " + name + " " + architecture + "(" + version + ")");
return mstatus;
}
Aggregations