Search in sources :

Example 1 with ArduinoInstallable

use of io.sloeber.core.api.Json.ArduinoInstallable 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;
}
Also used : MultiStatus(org.eclipse.core.runtime.MultiStatus) IStatus(org.eclipse.core.runtime.IStatus) MyMultiStatus(io.sloeber.core.tools.MyMultiStatus) Status(org.eclipse.core.runtime.Status) ArduinoPlatformToolVersion(io.sloeber.core.api.Json.ArduinoPlatformToolVersion) ArduinoInstallable(io.sloeber.core.api.Json.ArduinoInstallable) ArduinoPackage(io.sloeber.core.api.Json.ArduinoPackage) ArduinoPlatformTooldDependency(io.sloeber.core.api.Json.ArduinoPlatformTooldDependency) IOException(java.io.IOException) MyMultiStatus(io.sloeber.core.tools.MyMultiStatus) BoardTxtFile(io.sloeber.core.txt.BoardTxtFile) File(java.io.File)

Aggregations

ArduinoInstallable (io.sloeber.core.api.Json.ArduinoInstallable)1 ArduinoPackage (io.sloeber.core.api.Json.ArduinoPackage)1 ArduinoPlatformToolVersion (io.sloeber.core.api.Json.ArduinoPlatformToolVersion)1 ArduinoPlatformTooldDependency (io.sloeber.core.api.Json.ArduinoPlatformTooldDependency)1 MyMultiStatus (io.sloeber.core.tools.MyMultiStatus)1 BoardTxtFile (io.sloeber.core.txt.BoardTxtFile)1 File (java.io.File)1 IOException (java.io.IOException)1 IStatus (org.eclipse.core.runtime.IStatus)1 MultiStatus (org.eclipse.core.runtime.MultiStatus)1 Status (org.eclipse.core.runtime.Status)1