public RunProfileState getState( @NotNull Executor executor, @NotNull ExecutionEnvironment environment) throws ExecutionException { final VirtualFile script = getScriptFile(); if (script == null) { throw new CantRunException("Cannot find script " + scriptPath); } final GroovyScriptRunner scriptRunner = findConfiguration(); if (scriptRunner == null) { throw new CantRunException("Unknown script type " + scriptPath); } final Module module = getModule(); if (!scriptRunner.ensureRunnerConfigured(module, this, executor, getProject())) { return null; } final boolean tests = ProjectRootManager.getInstance(getProject()).getFileIndex().isInTestSourceContent(script); final JavaCommandLineState state = new JavaCommandLineState(environment) { @NotNull @Override protected OSProcessHandler startProcess() throws ExecutionException { final OSProcessHandler handler = super.startProcess(); handler.setShouldDestroyProcessRecursively(true); if (scriptRunner.shouldRefreshAfterFinish()) { handler.addProcessListener( new ProcessAdapter() { @Override public void processTerminated(ProcessEvent event) { if (!ApplicationManager.getApplication().isDisposed()) { VirtualFileManager.getInstance().refresh(true); } } }); } return handler; } protected JavaParameters createJavaParameters() throws ExecutionException { JavaParameters params = createJavaParametersWithSdk(module); ProgramParametersUtil.configureConfiguration(params, GroovyScriptRunConfiguration.this); scriptRunner.configureCommandLine( params, module, tests, script, GroovyScriptRunConfiguration.this); return params; } }; state.setConsoleBuilder(TextConsoleBuilderFactory.getInstance().createBuilder(getProject())); return state; }
public Collection<Module> getValidModules() { Module[] modules = ModuleManager.getInstance(getProject()).getModules(); final GroovyScriptRunner scriptRunner = findConfiguration(); if (scriptRunner == null) { return Arrays.asList(modules); } ArrayList<Module> res = new ArrayList<Module>(); for (Module module : modules) { if (scriptRunner.isValidModule(module)) { res.add(module); } } return res; }