aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-06-30 12:21:28 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-06-30 13:02:07 +0200
commit90ccaa583828aa4e9bf8b7b0507ab518121ef90c (patch)
tree4bfe07c86d091d50e07c8eae4d6521e921d5efaf /src/main/java/com/google/devtools/build/lib/rules
parent356e224c47675750c1b6e2acd432287783ec40bb (diff)
Introduce ctx.actions.write in place of ctx.file_action.
RELNOTES: None. PiperOrigin-RevId: 160630261
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkActionFactory.java33
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java11
2 files changed, 37 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkActionFactory.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkActionFactory.java
index 2bd1b4e8f2..985c5f80b3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkActionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkActionFactory.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.actions.Root;
import com.google.devtools.build.lib.actions.extra.SpawnInfo;
import com.google.devtools.build.lib.analysis.PseudoAction;
import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -192,6 +193,38 @@ public class SkylarkActionFactory implements SkylarkValue {
}
+ @SkylarkCallable(
+ name = "write",
+ doc = "Creates a file write action.",
+ parameters = {
+ @Param(
+ name = "output",
+ type = Artifact.class,
+ doc = "the output file.",
+ named = true
+ ),
+ @Param(
+ name = "content",
+ type = String.class,
+ doc = "the contents of the file.",
+ named = true
+ ),
+ @Param(
+ name = "is_executable",
+ type = Boolean.class,
+ defaultValue = "False",
+ doc = "whether the output file should be executable (default is False).",
+ named = true
+ )
+ }
+ )
+ public void write(Artifact output, String content, Boolean isExecutable)
+ throws EvalException {
+ context.checkMutable("actions.write");
+ FileWriteAction action =
+ FileWriteAction.create(ruleContext, output, content, isExecutable);
+ ruleContext.registerAction(action);
+ }
@Override
public boolean isImmutable() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
index 9488165e06..6603d91e9d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java
@@ -26,7 +26,6 @@ import com.google.devtools.build.lib.analysis.LocationExpander;
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution;
@@ -403,10 +402,10 @@ public class SkylarkRuleImplementationFunctions {
return builder.build();
}
- // TODO(bazel-team): improve this method to be more memory friendly
@SkylarkSignature(
name = "file_action",
- doc = "Creates a file write action.",
+ doc = "DEPRECATED. Use <a href =\"actions.html#write\">ctx.actions.write</a> instead. <br>"
+ + "Creates a file write action.",
objectType = SkylarkRuleContext.class,
returnType = Runtime.NoneType.class,
parameters = {
@@ -425,11 +424,9 @@ public class SkylarkRuleImplementationFunctions {
new BuiltinFunction("file_action") {
public Runtime.NoneType invoke(
SkylarkRuleContext ctx, Artifact output, String content, Boolean executable)
- throws EvalException, ConversionException {
+ throws EvalException {
ctx.checkMutable("file_action");
- FileWriteAction action =
- FileWriteAction.create(ctx.getRuleContext(), output, content, executable);
- ctx.getRuleContext().registerAction(action);
+ ctx.actions().write(output, content, executable);
return Runtime.NONE;
}
};