/** * Splices the command arguments using a single whitespace character as * the delimiter. * * @param command The command. * @return The spliced {@code command}. */ static String splice(String[] command) { return new Concat().appendArray(" ", (Object[]) command).toString(); } }
public ConditionalConcat whenIsNotNull(Object obj) { return when(obj != null); }
public Concat append(Object obj) { return conditional(c -> c.append(obj)); }
public Concat appendArray(String separator, Object... objs) { return conditional(c -> c.appendArray(separator, objs)); }
public void rm(boolean removeVolumes) throws DockerComposeException { ensureComposeFileAssigned(); final Concat cmd = new Concat("docker-compose") .whenIsNotNull(project).append(new StringBuilder(" -p ").append(project)) .append(" -f ").append(composeFile) .append(" rm -f") .when(removeVolumes).append(" -v"); run(cmd.toString()); }
public ConditionalConcat whenIsNull(Object obj) { return when(obj == null); }
public void down(boolean removeVolumes) throws DockerComposeException { ensureComposeFileAssigned(); final Concat cmd = new Concat("docker-compose") .whenIsNotNull(project).append(new StringBuilder(" -p ").append(project)) .append(" -f ").append(composeFile) .append(" down") .when(removeVolumes).append(" -v"); run(cmd.toString()); }
/** * Helper for naming the thread by taking the simple name of the given class (i.e. {@link Class#getSimpleName()}) * and concatenating hyphen-delimited {@code nameFrags}.<p> * * Example 1: {@code withName(Reaper.class)} results in {@code Reaper}.<br> * Example 2: {@code withName(Reaper.class, "collector", 0)} results in {@code Reaper-collector-0}.<br> * * @param cls The class name. * @param nameFrags The name fragments. * @return This {@link WorkerOptions} instance for fluent chaining. */ public WorkerOptions withName(Class<?> cls, Object... nameFrags) { final String name = new Concat() .append(cls.getSimpleName()) .when(nameFrags.length > 0).append(new Concat().append("-").appendArray("-", nameFrags)) .toString(); return withName(name); }
public void stop(int timeout) throws DockerComposeException { ensureComposeFileAssigned(); final Concat cmd = new Concat("docker-compose") .whenIsNotNull(project).append(new StringBuilder(" -p ").append(project)) .append(" -f ").append(composeFile) .append(" stop") .when(timeout != 0).append(new StringBuilder(" -t ").append(timeout)); run(cmd.toString()); }