Class: Google::Apis::RemotebuildexecutionV2::BuildBazelRemoteExecutionV2Directory

Inherits:
Object
  • Object
show all
Includes:
Core::Hashable, Core::JsonObjectSupport
Defined in:
generated/google/apis/remotebuildexecution_v2/classes.rb,
generated/google/apis/remotebuildexecution_v2/representations.rb,
generated/google/apis/remotebuildexecution_v2/representations.rb

Overview

A Directory represents a directory node in a file tree, containing zero or more children FileNodes, DirectoryNodes and SymlinkNodes. Each Node contains its name in the directory, either the digest of its content (either a file blob or a Directory proto) or a symlink target, as well as possibly some metadata about the file or directory. In order to ensure that two equivalent directory trees hash to the same value, the following restrictions MUST be obeyed when constructing a a Directory:

  • Every child in the directory must have a path of exactly one segment. Multiple levels of directory hierarchy may not be collapsed.
  • Each child in the directory must have a unique path segment (file name). Note that while the API itself is case-sensitive, the environment where the Action is executed may or may not be case-sensitive. That is, it is legal to call the API with a Directory that has both "Foo" and "foo" as children, but the Action may be rejected by the remote system upon execution.
  • The files, directories and symlinks in the directory must each be sorted in lexicographical order by path. The path strings must be sorted by code point, equivalently, by UTF-8 bytes.
  • The NodeProperties of files, directories, and symlinks must be sorted in lexicographical order by property name. A Directory that obeys the restrictions is said to be in canonical form. As an example, the following could be used for a file named bar and a directory named foo with an executable file named baz (hashes shortened for readability): json // (Directory proto) ` files: [ ` name: "bar", digest: ` hash: "4a73bc9d03...", size: 65534 `, node_properties: [ ` "name": "MTime", "value": "2017-01-15T01:30:15.01Z" ` ] ` ], directories: [ ` name: "foo", digest: ` hash: "4cf2eda940...", size: 43 ` ` ] ` // (Directory proto with hash "4cf2eda940..." and size 43) ` files: [ ` name: "baz", digest: ` hash: "b2c941073e...", size: 1294, `, is_executable: true ` ] `

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Core::JsonObjectSupport

#to_json

Methods included from Core::Hashable

process_value, #to_h

Constructor Details

#initialize(**args) ⇒ BuildBazelRemoteExecutionV2Directory

Returns a new instance of BuildBazelRemoteExecutionV2Directory.



1034
1035
1036
# File 'generated/google/apis/remotebuildexecution_v2/classes.rb', line 1034

def initialize(**args)
   update!(**args)
end

Instance Attribute Details

#directoriesArray<Google::Apis::RemotebuildexecutionV2::BuildBazelRemoteExecutionV2DirectoryNode>

The subdirectories in the directory. Corresponds to the JSON property directories



1017
1018
1019
# File 'generated/google/apis/remotebuildexecution_v2/classes.rb', line 1017

def directories
  @directories
end

#filesArray<Google::Apis::RemotebuildexecutionV2::BuildBazelRemoteExecutionV2FileNode>

The files in the directory. Corresponds to the JSON property files



1022
1023
1024
# File 'generated/google/apis/remotebuildexecution_v2/classes.rb', line 1022

def files
  @files
end

#node_propertiesArray<Google::Apis::RemotebuildexecutionV2::BuildBazelRemoteExecutionV2NodeProperty>

The node properties of the Directory. Corresponds to the JSON property nodeProperties



1027
1028
1029
# File 'generated/google/apis/remotebuildexecution_v2/classes.rb', line 1027

def node_properties
  @node_properties
end

The symlinks in the directory. Corresponds to the JSON property symlinks



1032
1033
1034
# File 'generated/google/apis/remotebuildexecution_v2/classes.rb', line 1032

def symlinks
  @symlinks
end

Instance Method Details

#update!(**args) ⇒ Object

Update properties of this object



1039
1040
1041
1042
1043
1044
# File 'generated/google/apis/remotebuildexecution_v2/classes.rb', line 1039

def update!(**args)
  @directories = args[:directories] if args.key?(:directories)
  @files = args[:files] if args.key?(:files)
  @node_properties = args[:node_properties] if args.key?(:node_properties)
  @symlinks = args[:symlinks] if args.key?(:symlinks)
end