Merge branch 'master' into traff/zip_helpers
[idea/community.git] / python / src / com / jetbrains / python / run / PythonTask.java
index 5b1d91963375e77e4ae4246a9a82b04dabd4917b..1d9ac37412343038b288a699f8f129a8f9e5fabf 100644 (file)
@@ -33,6 +33,7 @@ import com.intellij.openapi.util.SystemInfo;
 import com.intellij.openapi.util.io.FileUtil;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.util.NotNullFunction;
+import com.jetbrains.python.HelperPackage;
 import com.jetbrains.python.PyBundle;
 import com.jetbrains.python.buildout.BuildoutFacet;
 import com.jetbrains.python.console.PydevConsoleRunner;
@@ -60,6 +61,8 @@ public class PythonTask {
   private final Sdk mySdk;
   private String myWorkingDirectory;
   private String myRunnerScript;
+  private HelperPackage myHelper = null;
+
   private List<String> myParameters = new ArrayList<String>();
   private final String myRunTabTitle;
   private String myHelpId;
@@ -90,6 +93,10 @@ public class PythonTask {
     myRunnerScript = script;
   }
 
+  public void setHelper(HelperPackage helper) {
+    myHelper = helper;
+  }
+
   public void setParameters(List<String> parameters) {
     myParameters = parameters;
   }
@@ -148,7 +155,7 @@ public class PythonTask {
       homePath = FileUtil.toSystemDependentName(homePath);
     }
 
-    PythonCommandLineState.createStandardGroupsIn(cmd);
+    PythonCommandLineState.createStandardGroups(cmd);
     ParamsGroup scriptParams = cmd.getParametersList().getParamsGroup(PythonCommandLineState.GROUP_SCRIPT);
     assert scriptParams != null;
 
@@ -160,8 +167,14 @@ public class PythonTask {
       bashParams.addParameter("-cl");
 
       NotNullFunction<String, String> escaperFunction = StringUtil.escaper(false, "|>$\"'& ");
-      StringBuilder paramString = new StringBuilder(escaperFunction.fun(homePath) + " " + escaperFunction.fun(myRunnerScript));
-
+      StringBuilder paramString;
+      if (myHelper != null) {
+        paramString= new StringBuilder(escaperFunction.fun(homePath) + " " + escaperFunction.fun(myHelper.asParamString()));
+        myHelper.addToPythonPath(cmd.getEnvironment());
+      }
+      else {
+        paramString= new StringBuilder(escaperFunction.fun(homePath) + " " + escaperFunction.fun(myRunnerScript));
+      }
       for (String p : myParameters) {
         paramString.append(" ").append(p);
       }
@@ -169,7 +182,12 @@ public class PythonTask {
     }
     else {
       cmd.setExePath(homePath);
-      scriptParams.addParameter(myRunnerScript);
+      if (myHelper != null) {
+        myHelper.addToGroup(scriptParams, cmd);
+      }
+      else {
+        scriptParams.addParameter(myRunnerScript);
+      }
       scriptParams.addParameters(myParameters);
     }