mirror of
https://github.com/arduino/Arduino.git
synced 2024-12-01 12:24:14 +01:00
Tools path are now always available through preferences
The preference key is: {runtime.tools.TOOLNAME.path} {runtime.tools.TOOLNAME-VERSION.path} For example the tool "avrdude" is now available through {runtime.tools.avrdude.path} or if a specific version is needed: {runtime.tools.avrdude-5.11.path}
This commit is contained in:
parent
2c941d424e
commit
b1e0249a4f
@ -28,16 +28,11 @@
|
|||||||
*/
|
*/
|
||||||
package cc.arduino.packages.contributions;
|
package cc.arduino.packages.contributions;
|
||||||
|
|
||||||
import static processing.app.I18n._;
|
|
||||||
import static processing.app.I18n.format;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import processing.app.debug.LegacyTargetPlatform;
|
import processing.app.debug.LegacyTargetPlatform;
|
||||||
import processing.app.debug.TargetPackage;
|
import processing.app.debug.TargetPackage;
|
||||||
import processing.app.debug.TargetPlatformException;
|
import processing.app.debug.TargetPlatformException;
|
||||||
import processing.app.helpers.PreferencesMap;
|
|
||||||
|
|
||||||
public class ContributedTargetPlatform extends LegacyTargetPlatform {
|
public class ContributedTargetPlatform extends LegacyTargetPlatform {
|
||||||
|
|
||||||
@ -46,35 +41,5 @@ public class ContributedTargetPlatform extends LegacyTargetPlatform {
|
|||||||
ContributionsIndex index)
|
ContributionsIndex index)
|
||||||
throws TargetPlatformException {
|
throws TargetPlatformException {
|
||||||
super(_name, _folder, parent);
|
super(_name, _folder, parent);
|
||||||
|
|
||||||
// Populate tools
|
|
||||||
PreferencesMap toolsPrefs = preferences.subTree("tools");
|
|
||||||
Set<String> names = toolsPrefs.firstLevelMap().keySet();
|
|
||||||
for (String name : names) {
|
|
||||||
String version = toolsPrefs.get(name + ".version");
|
|
||||||
if (version == null) {
|
|
||||||
throw new TargetPlatformException(
|
|
||||||
format(_("Tool {0} must define a version property ({1})"), //
|
|
||||||
name, "tools." + name + ".version"));
|
|
||||||
}
|
|
||||||
|
|
||||||
String packageName = getContainerPackage().getId();
|
|
||||||
ContributedTool tool = index.findTool(packageName, name, version);
|
|
||||||
if (tool == null) {
|
|
||||||
throw new TargetPlatformException(
|
|
||||||
format(_("Tool {0} not found in package {1}"),
|
|
||||||
name + ":" + version, packageName));
|
|
||||||
}
|
|
||||||
|
|
||||||
DownloadableContribution download = tool.getDownloadableContribution();
|
|
||||||
if (!download.isInstalled()) {
|
|
||||||
throw new TargetPlatformException(
|
|
||||||
format(_("Tool {0} is required but it's not installed."), //
|
|
||||||
name + ":" + version));
|
|
||||||
}
|
|
||||||
preferences.put("tools." + name + ".path", //
|
|
||||||
download.getInstalledFolder().getAbsolutePath());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,9 @@ import java.io.FileInputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import processing.app.debug.TargetPackage;
|
import processing.app.debug.TargetPackage;
|
||||||
import processing.app.debug.TargetPlatform;
|
import processing.app.debug.TargetPlatform;
|
||||||
@ -221,6 +223,20 @@ public class ContributionsIndexer {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Set<ContributedTool> getInstalledTools() {
|
||||||
|
Set<ContributedTool> tools = new HashSet<ContributedTool>();
|
||||||
|
for (ContributedPackage pack : index.getPackages()) {
|
||||||
|
for (ContributedPlatform platform : pack.getPlatforms()) {
|
||||||
|
if (!platform.isInstalled())
|
||||||
|
continue;
|
||||||
|
for (ContributedTool tool : platform.getResolvedTools()) {
|
||||||
|
tools.add(tool);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tools;
|
||||||
|
}
|
||||||
|
|
||||||
public ContributionsIndex getIndex() {
|
public ContributionsIndex getIndex() {
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
@ -19,8 +19,8 @@ import org.apache.commons.logging.impl.NoOpLog;
|
|||||||
import cc.arduino.packages.DiscoveryManager;
|
import cc.arduino.packages.DiscoveryManager;
|
||||||
import cc.arduino.packages.Uploader;
|
import cc.arduino.packages.Uploader;
|
||||||
import processing.app.debug.Compiler;
|
import processing.app.debug.Compiler;
|
||||||
|
|
||||||
import cc.arduino.libraries.contributions.LibrariesIndexer;
|
import cc.arduino.libraries.contributions.LibrariesIndexer;
|
||||||
|
import cc.arduino.packages.contributions.ContributedTool;
|
||||||
import cc.arduino.packages.contributions.ContributionsIndexer;
|
import cc.arduino.packages.contributions.ContributionsIndexer;
|
||||||
import cc.arduino.utils.ArchiveExtractor;
|
import cc.arduino.utils.ArchiveExtractor;
|
||||||
import processing.app.debug.TargetBoard;
|
import processing.app.debug.TargetBoard;
|
||||||
@ -618,6 +618,7 @@ public class BaseNoGui {
|
|||||||
loadHardware(getHardwareFolder());
|
loadHardware(getHardwareFolder());
|
||||||
loadHardware(getSketchbookHardwareFolder());
|
loadHardware(getSketchbookHardwareFolder());
|
||||||
loadContributedHardware(indexer);
|
loadContributedHardware(indexer);
|
||||||
|
createToolPreferences(indexer);
|
||||||
|
|
||||||
librariesIndexer = new LibrariesIndexer(BaseNoGui.getSettingsFolder());
|
librariesIndexer = new LibrariesIndexer(BaseNoGui.getSettingsFolder());
|
||||||
File librariesIndexFile = librariesIndexer.getIndexFile();
|
File librariesIndexFile = librariesIndexer.getIndexFile();
|
||||||
@ -771,6 +772,21 @@ public class BaseNoGui {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static private void createToolPreferences(ContributionsIndexer indexer) {
|
||||||
|
// Remove previous runtime preferences
|
||||||
|
final String prefix = "runtime.tools.";
|
||||||
|
PreferencesData.removeAllKeysWithPrefix(prefix);
|
||||||
|
|
||||||
|
for (ContributedTool tool : indexer.getInstalledTools()) {
|
||||||
|
String path = tool.getDownloadableContribution().getInstalledFolder()
|
||||||
|
.getAbsolutePath();
|
||||||
|
String toolId = tool.getName();
|
||||||
|
PreferencesData.set(prefix + toolId + ".path", path);
|
||||||
|
toolId += "-" + tool.getVersion();
|
||||||
|
PreferencesData.set(prefix + toolId + ".path", path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static public void populateImportToLibraryTable() {
|
static public void populateImportToLibraryTable() {
|
||||||
// Populate importToLibraryTable
|
// Populate importToLibraryTable
|
||||||
importToLibraryTable = new HashMap<String, UserLibrary>();
|
importToLibraryTable = new HashMap<String, UserLibrary>();
|
||||||
|
@ -9,6 +9,7 @@ import java.io.InputStream;
|
|||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.MissingResourceException;
|
import java.util.MissingResourceException;
|
||||||
|
|
||||||
import processing.app.helpers.PreferencesMap;
|
import processing.app.helpers.PreferencesMap;
|
||||||
@ -205,6 +206,13 @@ public class PreferencesData {
|
|||||||
return new PreferencesMap(prefs);
|
return new PreferencesMap(prefs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static public void removeAllKeysWithPrefix(String prefix) {
|
||||||
|
Iterator<String> keys = prefs.keySet().iterator();
|
||||||
|
while (keys.hasNext())
|
||||||
|
if (keys.next().startsWith(prefix))
|
||||||
|
keys.remove();
|
||||||
|
}
|
||||||
|
|
||||||
// Decide wether changed preferences will be saved. When value is
|
// Decide wether changed preferences will be saved. When value is
|
||||||
// false, Preferences.save becomes a no-op.
|
// false, Preferences.save becomes a no-op.
|
||||||
static public void setDoSave(boolean value)
|
static public void setDoSave(boolean value)
|
||||||
|
Loading…
Reference in New Issue
Block a user