// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: build/bazel/remote/execution/v2/remote_execution.proto

package build.bazel.remote.execution.v2;

public interface CommandOrBuilder extends
    // @@protoc_insertion_point(interface_extends:build.bazel.remote.execution.v2.Command)
    com.google.protobuf.MessageOrBuilder {

  /**
   * <pre>
   * The arguments to the command. The first argument must be the path to the
   * executable, which must be either a relative path, in which case it is
   * evaluated with respect to the input root, or an absolute path.
   * </pre>
   *
   * <code>repeated string arguments = 1;</code>
   */
  java.util.List<java.lang.String>
      getArgumentsList();
  /**
   * <pre>
   * The arguments to the command. The first argument must be the path to the
   * executable, which must be either a relative path, in which case it is
   * evaluated with respect to the input root, or an absolute path.
   * </pre>
   *
   * <code>repeated string arguments = 1;</code>
   */
  int getArgumentsCount();
  /**
   * <pre>
   * The arguments to the command. The first argument must be the path to the
   * executable, which must be either a relative path, in which case it is
   * evaluated with respect to the input root, or an absolute path.
   * </pre>
   *
   * <code>repeated string arguments = 1;</code>
   */
  java.lang.String getArguments(int index);
  /**
   * <pre>
   * The arguments to the command. The first argument must be the path to the
   * executable, which must be either a relative path, in which case it is
   * evaluated with respect to the input root, or an absolute path.
   * </pre>
   *
   * <code>repeated string arguments = 1;</code>
   */
  com.google.protobuf.ByteString
      getArgumentsBytes(int index);

  /**
   * <pre>
   * The environment variables to set when running the program. The worker may
   * provide its own default environment variables; these defaults can be
   * overridden using this field. Additional variables can also be specified.
   * In order to ensure that equivalent `Command`s always hash to the same
   * value, the environment variables MUST be lexicographically sorted by name.
   * Sorting of strings is done by code point, equivalently, by the UTF-8 bytes.
   * </pre>
   *
   * <code>repeated .build.bazel.remote.execution.v2.Command.EnvironmentVariable environment_variables = 2;</code>
   */
  java.util.List<build.bazel.remote.execution.v2.Command.EnvironmentVariable> 
      getEnvironmentVariablesList();
  /**
   * <pre>
   * The environment variables to set when running the program. The worker may
   * provide its own default environment variables; these defaults can be
   * overridden using this field. Additional variables can also be specified.
   * In order to ensure that equivalent `Command`s always hash to the same
   * value, the environment variables MUST be lexicographically sorted by name.
   * Sorting of strings is done by code point, equivalently, by the UTF-8 bytes.
   * </pre>
   *
   * <code>repeated .build.bazel.remote.execution.v2.Command.EnvironmentVariable environment_variables = 2;</code>
   */
  build.bazel.remote.execution.v2.Command.EnvironmentVariable getEnvironmentVariables(int index);
  /**
   * <pre>
   * The environment variables to set when running the program. The worker may
   * provide its own default environment variables; these defaults can be
   * overridden using this field. Additional variables can also be specified.
   * In order to ensure that equivalent `Command`s always hash to the same
   * value, the environment variables MUST be lexicographically sorted by name.
   * Sorting of strings is done by code point, equivalently, by the UTF-8 bytes.
   * </pre>
   *
   * <code>repeated .build.bazel.remote.execution.v2.Command.EnvironmentVariable environment_variables = 2;</code>
   */
  int getEnvironmentVariablesCount();
  /**
   * <pre>
   * The environment variables to set when running the program. The worker may
   * provide its own default environment variables; these defaults can be
   * overridden using this field. Additional variables can also be specified.
   * In order to ensure that equivalent `Command`s always hash to the same
   * value, the environment variables MUST be lexicographically sorted by name.
   * Sorting of strings is done by code point, equivalently, by the UTF-8 bytes.
   * </pre>
   *
   * <code>repeated .build.bazel.remote.execution.v2.Command.EnvironmentVariable environment_variables = 2;</code>
   */
  java.util.List<? extends build.bazel.remote.execution.v2.Command.EnvironmentVariableOrBuilder> 
      getEnvironmentVariablesOrBuilderList();
  /**
   * <pre>
   * The environment variables to set when running the program. The worker may
   * provide its own default environment variables; these defaults can be
   * overridden using this field. Additional variables can also be specified.
   * In order to ensure that equivalent `Command`s always hash to the same
   * value, the environment variables MUST be lexicographically sorted by name.
   * Sorting of strings is done by code point, equivalently, by the UTF-8 bytes.
   * </pre>
   *
   * <code>repeated .build.bazel.remote.execution.v2.Command.EnvironmentVariable environment_variables = 2;</code>
   */
  build.bazel.remote.execution.v2.Command.EnvironmentVariableOrBuilder getEnvironmentVariablesOrBuilder(
      int index);

  /**
   * <pre>
   * A list of the output files that the client expects to retrieve from the
   * action. Only the listed files, as well as directories listed in
   * `output_directories`, will be returned to the client as output.
   * Other files that may be created during command execution are discarded.
   * The paths are relative to the working directory of the action execution.
   * The paths are specified using a single forward slash (`/`) as a path
   * separator, even if the execution platform natively uses a different
   * separator. The path MUST NOT include a trailing slash, nor a leading slash,
   * being a relative path.
   * In order to ensure consistent hashing of the same Action, the output paths
   * MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
   * bytes).
   * An output file cannot be duplicated, be a parent of another output file, be
   * a child of a listed output directory, or have the same path as any of the
   * listed output directories.
   * </pre>
   *
   * <code>repeated string output_files = 3;</code>
   */
  java.util.List<java.lang.String>
      getOutputFilesList();
  /**
   * <pre>
   * A list of the output files that the client expects to retrieve from the
   * action. Only the listed files, as well as directories listed in
   * `output_directories`, will be returned to the client as output.
   * Other files that may be created during command execution are discarded.
   * The paths are relative to the working directory of the action execution.
   * The paths are specified using a single forward slash (`/`) as a path
   * separator, even if the execution platform natively uses a different
   * separator. The path MUST NOT include a trailing slash, nor a leading slash,
   * being a relative path.
   * In order to ensure consistent hashing of the same Action, the output paths
   * MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
   * bytes).
   * An output file cannot be duplicated, be a parent of another output file, be
   * a child of a listed output directory, or have the same path as any of the
   * listed output directories.
   * </pre>
   *
   * <code>repeated string output_files = 3;</code>
   */
  int getOutputFilesCount();
  /**
   * <pre>
   * A list of the output files that the client expects to retrieve from the
   * action. Only the listed files, as well as directories listed in
   * `output_directories`, will be returned to the client as output.
   * Other files that may be created during command execution are discarded.
   * The paths are relative to the working directory of the action execution.
   * The paths are specified using a single forward slash (`/`) as a path
   * separator, even if the execution platform natively uses a different
   * separator. The path MUST NOT include a trailing slash, nor a leading slash,
   * being a relative path.
   * In order to ensure consistent hashing of the same Action, the output paths
   * MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
   * bytes).
   * An output file cannot be duplicated, be a parent of another output file, be
   * a child of a listed output directory, or have the same path as any of the
   * listed output directories.
   * </pre>
   *
   * <code>repeated string output_files = 3;</code>
   */
  java.lang.String getOutputFiles(int index);
  /**
   * <pre>
   * A list of the output files that the client expects to retrieve from the
   * action. Only the listed files, as well as directories listed in
   * `output_directories`, will be returned to the client as output.
   * Other files that may be created during command execution are discarded.
   * The paths are relative to the working directory of the action execution.
   * The paths are specified using a single forward slash (`/`) as a path
   * separator, even if the execution platform natively uses a different
   * separator. The path MUST NOT include a trailing slash, nor a leading slash,
   * being a relative path.
   * In order to ensure consistent hashing of the same Action, the output paths
   * MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
   * bytes).
   * An output file cannot be duplicated, be a parent of another output file, be
   * a child of a listed output directory, or have the same path as any of the
   * listed output directories.
   * </pre>
   *
   * <code>repeated string output_files = 3;</code>
   */
  com.google.protobuf.ByteString
      getOutputFilesBytes(int index);

  /**
   * <pre>
   * A list of the output directories that the client expects to retrieve from
   * the action. Only the contents of the indicated directories (recursively
   * including the contents of their subdirectories) will be
   * returned, as well as files listed in `output_files`. Other files that may
   * be created during command execution are discarded.
   * The paths are relative to the working directory of the action execution.
   * The paths are specified using a single forward slash (`/`) as a path
   * separator, even if the execution platform natively uses a different
   * separator. The path MUST NOT include a trailing slash, nor a leading slash,
   * being a relative path. The special value of empty string is allowed,
   * although not recommended, and can be used to capture the entire working
   * directory tree, including inputs.
   * In order to ensure consistent hashing of the same Action, the output paths
   * MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
   * bytes).
   * An output directory cannot be duplicated, be a parent of another output
   * directory, be a parent of a listed output file, or have the same path as
   * any of the listed output files.
   * </pre>
   *
   * <code>repeated string output_directories = 4;</code>
   */
  java.util.List<java.lang.String>
      getOutputDirectoriesList();
  /**
   * <pre>
   * A list of the output directories that the client expects to retrieve from
   * the action. Only the contents of the indicated directories (recursively
   * including the contents of their subdirectories) will be
   * returned, as well as files listed in `output_files`. Other files that may
   * be created during command execution are discarded.
   * The paths are relative to the working directory of the action execution.
   * The paths are specified using a single forward slash (`/`) as a path
   * separator, even if the execution platform natively uses a different
   * separator. The path MUST NOT include a trailing slash, nor a leading slash,
   * being a relative path. The special value of empty string is allowed,
   * although not recommended, and can be used to capture the entire working
   * directory tree, including inputs.
   * In order to ensure consistent hashing of the same Action, the output paths
   * MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
   * bytes).
   * An output directory cannot be duplicated, be a parent of another output
   * directory, be a parent of a listed output file, or have the same path as
   * any of the listed output files.
   * </pre>
   *
   * <code>repeated string output_directories = 4;</code>
   */
  int getOutputDirectoriesCount();
  /**
   * <pre>
   * A list of the output directories that the client expects to retrieve from
   * the action. Only the contents of the indicated directories (recursively
   * including the contents of their subdirectories) will be
   * returned, as well as files listed in `output_files`. Other files that may
   * be created during command execution are discarded.
   * The paths are relative to the working directory of the action execution.
   * The paths are specified using a single forward slash (`/`) as a path
   * separator, even if the execution platform natively uses a different
   * separator. The path MUST NOT include a trailing slash, nor a leading slash,
   * being a relative path. The special value of empty string is allowed,
   * although not recommended, and can be used to capture the entire working
   * directory tree, including inputs.
   * In order to ensure consistent hashing of the same Action, the output paths
   * MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
   * bytes).
   * An output directory cannot be duplicated, be a parent of another output
   * directory, be a parent of a listed output file, or have the same path as
   * any of the listed output files.
   * </pre>
   *
   * <code>repeated string output_directories = 4;</code>
   */
  java.lang.String getOutputDirectories(int index);
  /**
   * <pre>
   * A list of the output directories that the client expects to retrieve from
   * the action. Only the contents of the indicated directories (recursively
   * including the contents of their subdirectories) will be
   * returned, as well as files listed in `output_files`. Other files that may
   * be created during command execution are discarded.
   * The paths are relative to the working directory of the action execution.
   * The paths are specified using a single forward slash (`/`) as a path
   * separator, even if the execution platform natively uses a different
   * separator. The path MUST NOT include a trailing slash, nor a leading slash,
   * being a relative path. The special value of empty string is allowed,
   * although not recommended, and can be used to capture the entire working
   * directory tree, including inputs.
   * In order to ensure consistent hashing of the same Action, the output paths
   * MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
   * bytes).
   * An output directory cannot be duplicated, be a parent of another output
   * directory, be a parent of a listed output file, or have the same path as
   * any of the listed output files.
   * </pre>
   *
   * <code>repeated string output_directories = 4;</code>
   */
  com.google.protobuf.ByteString
      getOutputDirectoriesBytes(int index);

  /**
   * <pre>
   * The platform requirements for the execution environment. The server MAY
   * choose to execute the action on any worker satisfying the requirements, so
   * the client SHOULD ensure that running the action on any such worker will
   * have the same result.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.Platform platform = 5;</code>
   */
  boolean hasPlatform();
  /**
   * <pre>
   * The platform requirements for the execution environment. The server MAY
   * choose to execute the action on any worker satisfying the requirements, so
   * the client SHOULD ensure that running the action on any such worker will
   * have the same result.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.Platform platform = 5;</code>
   */
  build.bazel.remote.execution.v2.Platform getPlatform();
  /**
   * <pre>
   * The platform requirements for the execution environment. The server MAY
   * choose to execute the action on any worker satisfying the requirements, so
   * the client SHOULD ensure that running the action on any such worker will
   * have the same result.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.Platform platform = 5;</code>
   */
  build.bazel.remote.execution.v2.PlatformOrBuilder getPlatformOrBuilder();

  /**
   * <pre>
   * The working directory, relative to the input root, for the command to run
   * in. It must be a directory which exists in the input tree. If it is left
   * empty, then the action is run in the input root.
   * </pre>
   *
   * <code>string working_directory = 6;</code>
   */
  java.lang.String getWorkingDirectory();
  /**
   * <pre>
   * The working directory, relative to the input root, for the command to run
   * in. It must be a directory which exists in the input tree. If it is left
   * empty, then the action is run in the input root.
   * </pre>
   *
   * <code>string working_directory = 6;</code>
   */
  com.google.protobuf.ByteString
      getWorkingDirectoryBytes();
}
