// Copyright 2018 The Bazel Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.devtools.build.lib.skylarkbuildapi; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.build.lib.skylarkinterface.SkylarkValue; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.SkylarkDict; import com.google.devtools.build.lib.syntax.SkylarkList; import com.google.devtools.build.lib.syntax.SkylarkNestedSet; import java.io.IOException; /** Interface for actions in Skylark. */ @SkylarkModule( name = "Action", category = SkylarkModuleCategory.BUILTIN, doc = "An action created during rule analysis." + "

This object is visible for the purpose of testing, and may be obtained from an " + "Actions provider. It is normally not necessary " + "to access Action objects or their fields within a rule's " + "implementation function. You may instead want to see the " + "Rules page for a general discussion of how " + "to use actions when defining custom rules, or the API " + "reference for creating actions." + "

Some fields of this object are only applicable for certain kinds of actions. " + "Fields that are inapplicable are set to None.") public interface ActionApi extends SkylarkValue { @SkylarkCallable( name = "mnemonic", structField = true, doc = "The mnemonic for this action." ) public abstract String getMnemonic(); @SkylarkCallable( name = "inputs", doc = "A set of the input files of this action.", structField = true) public SkylarkNestedSet getSkylarkInputs(); @SkylarkCallable( name = "outputs", doc = "A set of the output files of this action.", structField = true) public SkylarkNestedSet getSkylarkOutputs(); @SkylarkCallable( name = "argv", doc = "For actions created by ctx.actions.run() " + "or ctx.actions.run_shell() an immutable " + "list of the arguments for the command line to be executed. Note that " + "for shell actions the first two arguments will be the shell path " + "and \"-c\".", structField = true, allowReturnNones = true ) public SkylarkList getSkylarkArgv() throws EvalException; @SkylarkCallable( name = "content", doc = "For actions created by ctx.actions.write() or " + "ctx.actions.expand_template()," + " the contents of the file to be written.", structField = true, allowReturnNones = true) public String getSkylarkContent() throws IOException; @SkylarkCallable( name = "substitutions", doc = "For actions created by " + "ctx.actions.expand_template()," + " an immutable dict holding the substitution mapping.", structField = true, allowReturnNones = true) public SkylarkDict getSkylarkSubstitutions(); @SkylarkCallable( name = "env", structField = true, doc = "The 'fixed' environment variables for this action. This includes only environment " + "settings which are explicitly set by the action definition, and thus omits settings " + "which are only pre-set in the execution environment.") public SkylarkDict getEnv(); }