public static void toJSON(OutputWriter jsonWriter, ExecTask execTask) { BaseTaskRepresenter.toJSON(jsonWriter, execTask); jsonWriter.add("command", execTask.command()); if (execTask.getArgList().isEmpty()) { jsonWriter.addIfNotNull("args", execTask.getArgs()); } else { List<String> arguments = execTask.getArgList().stream().map(Argument::getValue).collect(Collectors.toList()); jsonWriter.addChildList("arguments", arguments); } jsonWriter.addIfNotNull("working_directory", execTask.workingDirectory()); }
@Test public void shouldAllowSettingOfConfigAttributes() throws Exception { ExecTask exec = new ExecTask(); exec.setConfigAttributes(m(ExecTask.COMMAND, "ls", ExecTask.ARGS, "-la", ExecTask.WORKING_DIR, "my_dir")); assertThat(exec.command(), is("ls")); assertThat(exec.getArgs(), is("-la")); assertThat(exec.getArgListString(), is("")); assertThat(exec.workingDirectory(), is("my_dir")); exec.setConfigAttributes(m(ExecTask.COMMAND, null, ExecTask.ARGS, null, ExecTask.WORKING_DIR, null)); assertThat(exec.command(), is(nullValue())); assertThat(exec.getArgs(), is("")); assertThat(exec.workingDirectory(), is(nullValue())); exec.setConfigAttributes(m(ExecTask.COMMAND, null, ExecTask.ARG_LIST_STRING, "-l\n-a\npavan's\\n working dir?", ExecTask.WORKING_DIR, null)); assertThat(exec.command(), is(nullValue())); assertThat(exec.getArgListString(), is("-l\n-a\npavan's\\n working dir?")); assertThat(exec.getArgList().size(), is(3)); assertThat(exec.getArgList().get(0), is(new Argument("-l"))); assertThat(exec.getArgList().get(1), is(new Argument("-a"))); assertThat(exec.getArgList().get(2), is(new Argument("pavan's\\n working dir?"))); assertThat(exec.workingDirectory(), is(nullValue())); }
public static void toJSON(OutputWriter jsonWriter, ExecTask execTask) { BaseTaskRepresenter.toJSON(jsonWriter, execTask); jsonWriter.add("command", execTask.command()); if (execTask.getArgList().isEmpty()) { jsonWriter.addIfNotNull("args", execTask.getArgs()); } else { List<String> arguments = execTask.getArgList().stream().map(Argument::getValue).collect(Collectors.toList()); jsonWriter.addChildList("arguments", arguments); } jsonWriter.addIfNotNull("working_directory", execTask.workingDirectory()); }
private CRExecTask execTasktoCRExecTask(ExecTask task) { CRExecTask crExecTask = new CRExecTask(task.getCommand()); crExecTask.setTimeout(task.getTimeout()); crExecTask.setWorkingDirectory(task.workingDirectory()); crExecTask.setArgs(task.getArgList().stream() .map(Argument::getValue) .collect(Collectors.toList()) ); commonCRTaskMembers(crExecTask, task); return crExecTask; }
@Override public Builder createBuilder(BuilderFactory builderFactory, ExecTask task, Pipeline pipeline, UpstreamPipelineResolver pipelineResolver) { String workingDir = task.workingDirectory(); String command = task.command(); File newWorkingDir = workingDir == null ? pipeline.defaultWorkingFolder() : new File( applyBaseDirIfRelativeAndNormalize(pipeline.defaultWorkingFolder(), new File(workingDir))); Builder builder = builderFactory.builderFor(task.cancelTask(), pipeline, pipelineResolver); String description = task.describe(); if (!task.getArgList().isEmpty()) { return new CommandBuilderWithArgList(command, task.getArgList().toStringArray(), newWorkingDir, task.getConditions(), builder, description); } else { return new CommandBuilder(command, task.getArgs(), newWorkingDir, task.getConditions(), builder, description); } } }
public static Builder builderFor(ExecTask task) { Builder cancelTask = null; if (task.cancelTask() != null) { cancelTask = builderFor((ExecTask) task.cancelTask()); } return new CommandBuilderWithArgList(task.command(), task.getArgList().toStringArray(), new File(task.workingDirectory()), task.getConditions(), cancelTask, task.describe()); }
@Test public void shouldNotSetArgsIfTheValueIsBlank() throws Exception { ExecTask exec = new ExecTask(); exec.setConfigAttributes(m(ExecTask.COMMAND, "ls", ExecTask.ARGS, "", ExecTask.WORKING_DIR, "my_dir")); exec.setConfigAttributes(m()); assertThat(exec.command(), is("ls")); assertThat(exec.getArgList().size(), is(0)); assertThat(exec.workingDirectory(), is("my_dir")); }
public void validateTask(ValidationContext ctx) { validateCommand(); if (!usingBothArgsAndArgList()) { errors.add(ARGS, EXEC_CONFIG_ERROR); errors.add(ARG_LIST_STRING, EXEC_CONFIG_ERROR); } if (workingDirectory != null && !FilenameUtil.isNormalizedPathOutsideWorkingDir(workingDirectory)) { if (ctx.isWithinPipelines()) { errors.add(WORKING_DIR, String.format("The path of the working directory for the custom command in job '%s' in stage '%s' of pipeline '%s' is outside the agent sandbox.", ctx.getJob().name(), ctx.getStage().name(), ctx.getPipeline().name())); } else { errors.add(WORKING_DIR, String.format("The path of the working directory for the custom command in job '%s' in stage '%s' of template '%s' is outside the agent sandbox.", ctx.getJob().name(), ctx.getStage().name(), ctx.getTemplate().name())); } } for (Argument argument : getArgList()) { if (!argument.errors().isEmpty()) { errors.add(ARG_LIST_STRING, argument.errors().asString()); } } }
@Test public void shouldSupportMultipleArgs() throws Exception { String xml = "<exec command='ls'>\n" + " <arg>arg1</arg>\n" + " <arg>arg2</arg>\n" + "</exec>"; ExecTask execTask = new MagicalGoConfigXmlLoader(new ConfigCache(), ConfigElementImplementationRegistryMother.withNoPlugins()).fromXmlPartial(xml, ExecTask.class); assertThat(execTask.getArgList(), is(new Arguments(new Argument("arg1"), new Argument("arg2")))); }
copyCollectionErrors(fromTask.getConditions(), toTask.getConditions()); if (toTask instanceof ExecTask) { copyCollectionErrors(((ExecTask) fromTask).getArgList(), ((ExecTask) toTask).getArgList());