public Command setDirectory(File directory) { Preconditions.checkNotNull(directory, "directory is null"); return new Command(command, successfulExitCodes, directory, environment, timeLimit); }
public Command setTimeLimit(Duration timeLimit) { Preconditions.checkNotNull(timeLimit, "timeLimit is null"); return new Command(command, successfulExitCodes, directory, environment, timeLimit); }
public Command setSuccessfulExitCodes(Set<Integer> successfulExitCodes) { Preconditions.checkNotNull(successfulExitCodes, "successfulExitCodes is null"); Preconditions.checkArgument(!successfulExitCodes.isEmpty(), "successfulExitCodes is empty"); return new Command(command, successfulExitCodes, directory, environment, timeLimit); }
public Command addEnvironment(Map<String, String> environment) { Preconditions.checkNotNull(environment, "environment is null"); ImmutableMap.Builder<String, String> builder = ImmutableMap.<String, String>builder().putAll(this.environment).putAll(environment); return new Command(command, successfulExitCodes, directory, builder.build(), timeLimit); }
public Command addArgs(Iterable<String> args) { Preconditions.checkNotNull(args, "args is null"); ImmutableList.Builder<String> command = ImmutableList.<String>builder().addAll(this.command).addAll(args); return new Command(command.build(), successfulExitCodes, directory, environment, timeLimit); }
public Command addEnvironment(String name, String value) { Preconditions.checkNotNull(name, "name is null"); Preconditions.checkNotNull(value, "value is null"); ImmutableMap.Builder<String, String> builder = ImmutableMap.<String, String>builder().putAll(this.environment).put(name, value); return new Command(command, successfulExitCodes, directory, builder.build(), timeLimit); }
public static void createTar(File sourceDirectory, File tarFile) throws CommandFailedException { Preconditions.checkNotNull(sourceDirectory, "sourceDirectory is null"); Preconditions.checkArgument(sourceDirectory.isDirectory(), "sourceDirectory is not a directory: " + sourceDirectory.getAbsolutePath()); Preconditions.checkNotNull(tarFile, "tarFile is null"); tarFile.getParentFile().mkdirs(); new Command("tar", "zcf", tarFile.getAbsolutePath(), sourceDirectory.getName()) .setDirectory(sourceDirectory.getParent()) .setTimeLimit(5, TimeUnit.MINUTES) .execute(executor); }
public static void createSymbolicLink(File source, File target) throws CommandFailedException { Preconditions.checkNotNull(source, "source is null"); Preconditions.checkArgument(source.exists(), "source does not exist: " + source.getAbsolutePath()); Preconditions.checkNotNull(target, "source is null"); Preconditions.checkArgument(!target.exists(), "target already exists: " + target.getAbsolutePath()); target.getParentFile().mkdirs(); new Command("ln", "-s", source.getAbsolutePath(), target.getAbsolutePath()) .setDirectory(target.getParent()) .setTimeLimit(5, TimeUnit.MINUTES) .execute(executor); }
public static void extractTar(File tarFile, File targetDirectory, Duration timeLimit) throws CommandFailedException { Preconditions.checkNotNull(tarFile, "tarFile is null"); Preconditions.checkNotNull(targetDirectory, "targetDirectory is null"); Preconditions.checkArgument(targetDirectory.isDirectory(), "targetDirectory is not a directory: " + targetDirectory.getAbsolutePath()); new Command("tar", "zxf", tarFile.getAbsolutePath()) .setDirectory(targetDirectory) .setTimeLimit(timeLimit) .execute(executor); }
private Command createCommand(String commandName, Deployment deployment, Duration timeLimit) { File launcherScript = new File(new File(deployment.getDeploymentDir(), "bin"), "launcher"); Command command = new Command(launcherScript.getAbsolutePath(), commandName) .setDirectory(deployment.getDataDir()) .setTimeLimit(timeLimit) .addEnvironment("HOME", deployment.getDataDir().getAbsolutePath()); return command; }