/****************************************************************************** * Copyright (C) 2005-2013 Fabio Zadrozny and others * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Fabio Zadrozny <fabiofz@gmail.com> - initial API and implementation * Jonah Graham <jonah@kichwacoders.com> - ongoing maintenance ******************************************************************************/ package org.python.pydev.ui.pythonpathconf; import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.eclipse.core.runtime.CoreException; import org.python.pydev.core.log.Log; import org.python.pydev.runners.SimpleRunner; import org.python.pydev.shared_core.string.StringUtils; public class JythonInterpreterProviderFactory extends AbstractInterpreterProviderFactory { @Override public IInterpreterProvider[] getInterpreterProviders(InterpreterType type) { if (type != IInterpreterProviderFactory.InterpreterType.JYTHON) { return null; } Set<String> pathsToSearch = new LinkedHashSet<String>(); try { Map<String, String> env = SimpleRunner.getDefaultSystemEnv(null); if (env.containsKey("JYTHON_HOME")) { pathsToSearch.add(env.get("JYTHON_HOME")); } if (env.containsKey("PYTHON_HOME")) { pathsToSearch.add(env.get("PYTHON_HOME")); } if (env.containsKey("JYTHONHOME")) { pathsToSearch.add(env.get("JYTHONHOME")); } if (env.containsKey("PYTHONHOME")) { pathsToSearch.add(env.get("PYTHONHOME")); } if (env.containsKey("PATH")) { String path = env.get("PATH"); String separator = SimpleRunner.getPythonPathSeparator(); final List<String> split = StringUtils.split(path, separator); pathsToSearch.addAll(split); } } catch (CoreException e) { Log.log(e); } pathsToSearch.add("/usr/share/java"); pathsToSearch.add("/usr/bin"); pathsToSearch.add("/usr/local/bin"); String[] searchResults = searchPaths(pathsToSearch, Arrays.asList("jython.jar")); if (searchResults.length > 0) { return AlreadyInstalledInterpreterProvider.create("jython", searchResults); } return null; } }