diff --git a/python/src/com/jetbrains/python/packaging/PyCondaPackageManagerImpl.java b/python/src/com/jetbrains/python/packaging/PyCondaPackageManagerImpl.java index 30d6f9d2b8ce..4b0357889f39 100644 --- a/python/src/com/jetbrains/python/packaging/PyCondaPackageManagerImpl.java +++ b/python/src/com/jetbrains/python/packaging/PyCondaPackageManagerImpl.java @@ -171,8 +171,7 @@ public class PyCondaPackageManagerImpl extends PyPackageManagerImpl { @NotNull public static String createVirtualEnv(@NotNull String destinationDir, String version) throws ExecutionException { - final String condaName = SystemInfo.isWindows ? "conda.exe" : "conda"; - final String condaExecutable = PyCondaPackageService.getCondaExecutable(condaName); + final String condaExecutable = PyCondaPackageService.getCondaExecutable(); if (condaExecutable == null) throw new PyExecutionException("Cannot find conda", "Conda", Collections.emptyList(), new ProcessOutput()); final ArrayList parameters = Lists.newArrayList(condaExecutable, "create", "-p", destinationDir, diff --git a/python/src/com/jetbrains/python/packaging/PyCondaPackageService.java b/python/src/com/jetbrains/python/packaging/PyCondaPackageService.java index ae79f64e5e5c..406be20c982f 100644 --- a/python/src/com/jetbrains/python/packaging/PyCondaPackageService.java +++ b/python/src/com/jetbrains/python/packaging/PyCondaPackageService.java @@ -79,12 +79,28 @@ public class PyCondaPackageService implements PersistentStateComponent parameters = Lists.newArrayList(conda, "config", "--add", "channels", repositoryUrl, "--force"); + final GeneralCommandLine commandLine = new GeneralCommandLine(parameters); + + try { + final Process process = commandLine.createProcess(); + final CapturingProcessHandler handler = new CapturingProcessHandler(process); + final ProcessOutput result = handler.runProcess(); + final int exitCode = result.getExitCode(); + if (exitCode != 0) { + final String message = StringUtil.isEmptyOrSpaces(result.getStdout()) && StringUtil.isEmptyOrSpaces(result.getStderr()) ? + "Permission denied" : "Non-zero exit code"; + LOG.warn("Failed to add repository " + message); + } + PyCondaPackageService.getInstance().addChannel(repositoryUrl); + } + catch (ExecutionException e) { + LOG.warn("Failed to add repository"); + } + + } + + @Override + public void removeRepository(String repositoryUrl) { + final String conda = PyCondaPackageService.getCondaExecutable(); + final ArrayList parameters = Lists.newArrayList(conda, "config", "--remove", "channels", repositoryUrl, "--force"); + final GeneralCommandLine commandLine = new GeneralCommandLine(parameters); + + try { + final Process process = commandLine.createProcess(); + final CapturingProcessHandler handler = new CapturingProcessHandler(process); + final ProcessOutput result = handler.runProcess(); + final int exitCode = result.getExitCode(); + if (exitCode != 0) { + final String message = StringUtil.isEmptyOrSpaces(result.getStdout()) && StringUtil.isEmptyOrSpaces(result.getStderr()) ? + "Permission denied" : "Non-zero exit code"; + LOG.warn("Failed to remove repository " + message); + } + PyCondaPackageService.getInstance().removeChannel(repositoryUrl); + } + catch (ExecutionException e) { + LOG.warn("Failed to remove repository"); + } + } + @Override public boolean canInstallToUser() { return false; diff --git a/python/src/com/jetbrains/python/sdk/PythonSdkDetailsStep.java b/python/src/com/jetbrains/python/sdk/PythonSdkDetailsStep.java index bf16c4ee37bb..c66d491f6a7f 100644 --- a/python/src/com/jetbrains/python/sdk/PythonSdkDetailsStep.java +++ b/python/src/com/jetbrains/python/sdk/PythonSdkDetailsStep.java @@ -37,7 +37,6 @@ import com.intellij.openapi.ui.popup.ListSeparator; import com.intellij.openapi.ui.popup.PopupStep; import com.intellij.openapi.ui.popup.util.BaseListPopupStep; import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.util.SystemInfo; import com.intellij.util.NullableConsumer; import com.jetbrains.python.PyBundle; import com.jetbrains.python.packaging.PyCondaPackageService; @@ -110,8 +109,7 @@ public class PythonSdkDetailsStep extends BaseListPopupStep { options.add(REMOTE); } options.add(VIRTUALENV); - final String condaName = SystemInfo.isWindows ? "conda.exe" : "conda"; - if (PyCondaPackageService.getCondaExecutable(condaName) != null) { + if (PyCondaPackageService.getCondaExecutable() != null) { options.add(CONDA); }