use of io.sloeber.core.api.Json.ArduinoPackage 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;
}
use of io.sloeber.core.api.Json.ArduinoPackage in project arduino-eclipse-plugin by Sloeber.
the class PlatformSelectionPage method mustBeInstalled.
private boolean mustBeInstalled(ArduinoPlatform platform) {
ArduinoPackage parentPkg = platform.getParent();
ArduinoPlatformPackageIndex parentIndex = parentPkg.getPackageIndex();
InstallableVersion[] inScopeVersions = myShownPlatforms.get(parentIndex.getID()).get(parentPkg.getID()).get(platform.getID());
for (InstallableVersion version : inScopeVersions) {
if (version.mustBeInstalled()) {
return true;
}
}
return false;
}
use of io.sloeber.core.api.Json.ArduinoPackage in project arduino-eclipse-plugin by Sloeber.
the class BoardsManager method getNewestBoardIDFromBoardsManager.
private static BoardDescription getNewestBoardIDFromBoardsManager(String jsonFileName, String packageName, String architectureName, String boardID, Map<String, String> options) {
ArduinoPackage thePackage = getPackage(jsonFileName, packageName);
if (thePackage == null) {
// fail("failed to find package:" + this.mPackageName);
return null;
}
ArduinoPlatform platform = thePackage.getPlatform(architectureName);
if (platform == null) {
// package:" + this.mPackageName);
return null;
}
ArduinoPlatformVersion platformVersion = platform.getNewestVersion();
java.io.File boardsFile = platformVersion.getBoardsFile();
BoardDescription boardid = new BoardDescription(boardsFile, boardID, options);
return boardid;
}
use of io.sloeber.core.api.Json.ArduinoPackage in project arduino-eclipse-plugin by Sloeber.
the class BoardsManager method getEnvVarPlatformFileTools.
private static Map<String, String> getEnvVarPlatformFileTools(ArduinoPlatformVersion platformVersion) {
HashMap<String, String> vars = new HashMap<>();
ArduinoPackage pkg = platformVersion.getParent().getParent();
for (ArduinoPlatformTooldDependency tool : platformVersion.getToolsDependencies()) {
ArduinoPlatformTool theTool = pkg.getTool(tool.getName());
if (theTool == null) {
// $NON-NLS-1$ //$NON-NLS-2$
System.err.println("Did not find " + tool.getName() + " in package with ID " + pkg.getID());
} else {
vars.putAll(theTool.getEnvVars(null));
}
}
return vars;
}
use of io.sloeber.core.api.Json.ArduinoPackage in project arduino-eclipse-plugin by Sloeber.
the class BoardsManager method installLatestPlatform.
public static void installLatestPlatform(String JasonName, String packageName, String architectureName) {
if (!isReady()) {
Common.log(new Status(IStatus.ERROR, Const.CORE_PLUGIN_ID, BoardsManagerIsBussy, new Exception()));
return;
}
envVarsNeedUpdating = true;
ArduinoPackage curPackage = getPackage(JasonName, packageName);
if (curPackage != null) {
ArduinoPlatform curPlatform = curPackage.getPlatform(architectureName);
if (curPlatform != null) {
ArduinoPlatformVersion curPlatformVersion = curPlatform.getNewestVersion();
if (curPlatformVersion != null) {
NullProgressMonitor monitor = new NullProgressMonitor();
install(curPlatformVersion, monitor);
return;
}
}
}
Common.log(new Status(IStatus.ERROR, Const.CORE_PLUGIN_ID, // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"failed to find " + JasonName + " " + packageName + " " + architectureName));
}
Aggregations