aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java46
1 files changed, 41 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java
index 32ec7a8506..33a9245c2b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileInfo.java
@@ -14,6 +14,8 @@
package com.google.devtools.build.lib.analysis.actions;
+import static java.nio.charset.StandardCharsets.ISO_8859_1;
+
import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.errorprone.annotations.CompileTimeConstant;
@@ -32,11 +34,7 @@ public final class ParamFileInfo {
private final String flag;
private final boolean always;
- public ParamFileInfo(
- ParameterFileType fileType,
- Charset charset,
- @CompileTimeConstant String flag,
- boolean always) {
+ private ParamFileInfo(ParameterFileType fileType, Charset charset, String flag, boolean always) {
this.fileType = Preconditions.checkNotNull(fileType);
this.charset = Preconditions.checkNotNull(charset);
this.flag = Preconditions.checkNotNull(flag);
@@ -88,4 +86,42 @@ public final class ParamFileInfo {
&& flag.equals(other.flag)
&& always == other.always;
}
+
+ public static Builder builder(ParameterFileType parameterFileType) {
+ return new Builder(parameterFileType);
+ }
+
+ /** Builder for a ParamFileInfo. */
+ public static class Builder {
+ private final ParameterFileType fileType;
+ private Charset charset = ISO_8859_1;
+ private String flag = "@";
+ private boolean always;
+
+ private Builder(ParameterFileType fileType) {
+ this.fileType = fileType;
+ }
+
+ /** Sets the encoding to write the parameter file with. */
+ public Builder setCharset(Charset charset) {
+ this.charset = charset;
+ return this;
+ }
+
+ /** Sets a prefix to use for the flag that is passed to original command. */
+ public Builder setFlag(@CompileTimeConstant String flag) {
+ this.flag = flag;
+ return this;
+ }
+
+ /** Set whether the parameter file is always used, regardless of parameter file length. */
+ public Builder setUseAlways(boolean always) {
+ this.always = always;
+ return this;
+ }
+
+ public ParamFileInfo build() {
+ return new ParamFileInfo(fileType, charset, flag, always);
+ }
+ }
}