cmake-runner-agent/src/jetbrains/buildServer/cmakerunner/agent/ExtendedBuildServiceAdapter.java (40 lines of code) (raw):
package jetbrains.buildServer.cmakerunner.agent;
import jetbrains.buildServer.agent.runner.BuildServiceAdapter;
import jetbrains.buildServer.util.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author Vladislav.Rassokhin
*/
public abstract class ExtendedBuildServiceAdapter extends BuildServiceAdapter {
@NotNull
private static final String NEW_LINES_PATTERN = "[" + System.getProperty("line.separator", "\n") + "]+";
// Tmp files set
@NotNull
protected final Set<File> myFilesToDelete = new HashSet<File>();
@Override
public void afterProcessFinished() {
// Remove tmp files
for (final File file : myFilesToDelete) {
jetbrains.buildServer.util.FileUtil.delete(file);
}
myFilesToDelete.clear();
}
// Work with arguments
protected void addCustomArguments(@NotNull final List<String> args, @Nullable final String parameters) {
if (StringUtil.isEmptyOrSpaces(parameters)) return;
//noinspection ConstantConditions
for (final String _line : parameters.split(NEW_LINES_PATTERN)) {
final String line = _line.trim();
if (StringUtil.isEmptyOrSpaces(line)) continue;
args.addAll(StringUtil.splitHonorQuotes(line));
}
}
protected void addVariablesToArguments(@NotNull final List<String> args, @NotNull final Map<String, String> variables) {
for (final Map.Entry<String, String> entry : variables.entrySet()) {
args.add(getVariableToArgument(entry.getKey(), entry.getValue()));
}
}
@NotNull
protected String getVariableToArgument(@NotNull final String name, @NotNull final String value) {
return "-D" + name + "=" + value;
}
}