diff options
author | dslomov <dslomov@google.com> | 2017-06-30 12:21:28 +0200 |
---|---|---|
committer | Marcel Hlopko <hlopko@google.com> | 2017-06-30 13:02:07 +0200 |
commit | 90ccaa583828aa4e9bf8b7b0507ab518121ef90c (patch) | |
tree | 4bfe07c86d091d50e07c8eae4d6521e921d5efaf /src/main/java/com/google/devtools/build/lib/rules | |
parent | 356e224c47675750c1b6e2acd432287783ec40bb (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.java | 33 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleImplementationFunctions.java | 11 |
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; } }; |