/** * This runner needs runner options (user configurations) and environment name (inputted by user). * It analyzes all given information and get necessary information. * * @param locale localization constants * @param runnerCounter utility that support the counter of runners * @param runOptions options which needs to be used * @param environmentName name of custom configuration */ @AssistedInject public RunnerImpl( @NotNull RunnerLocalizationConstant locale, @NotNull RunnerCounter runnerCounter, @NotNull GetEnvironmentsUtil util, @NotNull @Assisted RunOptions runOptions, @NotNull @Assisted Scope environmentScope, @Nullable @Assisted String environmentName) { this.runOptions = runOptions; this.ram = runOptions.getMemorySize(); this.title = RUNNER_NAME + runnerCounter.getRunnerNumber() + (environmentName == null ? "" : " - " + getCorrectName(environmentName)); this.activeTab = locale.runnerTabConsole(); this.status = IN_QUEUE; this.scope = environmentScope; creationTime = System.currentTimeMillis(); String environmentId = runOptions.getEnvironmentId(); if (environmentId == null || environmentId.startsWith("project:/")) { this.type = util.getType(); } else { this.type = util.getCorrectCategoryName(runOptions.getEnvironmentId()); } // the environment ID in runOptions should be an URL if (environmentId != null) { runOptions.setEnvironmentId(environmentId); } }
/** {@inheritDoc} */ @Override public Runner launchRunner() { CurrentProject currentProject = appContext.getCurrentProject(); if (currentProject == null) { throw new IllegalStateException( "Can't launch runner for current project. Current project is absent..."); } int ram = DEFAULT.getValue(); RunnersDescriptor runnersDescriptor = currentProject.getProjectDescription().getRunners(); String defaultRunner = runnersDescriptor.getDefault(); if (!EnvironmentIdValidator.isValid(defaultRunner)) { defaultRunner = URL.encode(defaultRunner); } RunnerConfiguration defaultConfigs = runnersDescriptor.getConfigs().get(defaultRunner); if (defaultRunner != null && defaultConfigs != null) { ram = defaultConfigs.getRam(); } RunOptions runOptions = dtoFactory .createDto(RunOptions.class) .withSkipBuild(Boolean.valueOf(currentProject.getAttributeValue("runner:skipBuild"))) .withEnvironmentId(defaultRunner) .withMemorySize(ram); Environment environment = chooseRunnerAction.selectEnvironment(); if (environment != null) { if (defaultRunner != null && defaultRunner.equals(environment.getId())) { Runner runner = modelsFactory.createRunner(runOptions); if (defaultRunner.startsWith(PROJECT_PREFIX)) { runner.setScope(PROJECT); } return launchRunner(runner); } runOptions = runOptions .withOptions(environment.getOptions()) .withMemorySize(environment.getRam()) .withEnvironmentId(environment.getId()); Runner runner = modelsFactory.createRunner(runOptions, environment.getScope(), environment.getName()); if (environment.getId().startsWith(PROJECT_PREFIX)) { runner.setScope(PROJECT); } return launchRunner(runner); } Runner runner = modelsFactory.createRunner(runOptions); if (defaultRunner != null && defaultRunner.startsWith(PROJECT_PREFIX)) { runner.setScope(PROJECT); } return launchRunner(modelsFactory.createRunner(runOptions)); }
/** {@inheritDoc} */ @NotNull @Override public String getEnvironmentId() { return runOptions.getEnvironmentId(); }