Module: Aruba::Api::Filesystem
- Included in:
- Aruba::Api
- Defined in:
- lib/aruba/api/filesystem.rb
Overview
Filesystem methods
Instance Method Summary collapse
-
#absolute?(path) ⇒ TrueClass, FalseClass
Check if path is absolute.
-
#all_directories ⇒ Array
Return all existing directories in current directory.
-
#all_files ⇒ Array
Return all existing files in current directory.
-
#all_paths ⇒ Array
Return all existing paths (directories, files) in current dir.
-
#append_to_file(file_name, file_content) ⇒ Object
Append data to file.
-
#chmod(*args) ⇒ Object
Change file system permissions of file.
-
#copy(*args) ⇒ Object
Copy a file and/or directory.
-
#create_directory(directory_name) ⇒ Object
Create a directory in current directory.
-
#directory(path) ⇒ Dir
Create directory object.
-
#directory?(file) ⇒ Boolean
Check if directory exist and is directory.
-
#disk_usage(*paths) ⇒ Object
Calculate disk usage for file(s) and/or directories.
-
#executable?(path) ⇒ Boolean
Check if file exist and is executable.
-
#exist?(file_or_directory) ⇒ Boolean
Check if file or directory exist.
-
#file?(file) ⇒ Boolean
Check if file exist and is file.
-
#file_size(name) ⇒ Numeric
Get size of file.
-
#list(name) ⇒ Array
Return content of directory.
-
#move(*args) ⇒ Object
Move a file and/or directory.
-
#overwrite_file(name, content) ⇒ Object
Create a file with given content.
-
#read(name) ⇒ Array
Return content of file.
-
#relative?(path) ⇒ TrueClass, FalseClass
Check if path is relative.
-
#remove(*args) ⇒ Object
Remove file or directory.
-
#touch(*args) ⇒ Object
Create an empty file.
-
#with_file_content(file) { ... } ⇒ Object
Read content of file and yield the content to block.
-
#write_file(name, content) ⇒ Object
Create a file with given content.
-
#write_fixed_size_file(name, size) ⇒ Object
Create a file with the given size.
Instance Method Details
#absolute?(path) ⇒ TrueClass, FalseClass
Check if path is absolute
55 56 57 |
# File 'lib/aruba/api/filesystem.rb', line 55 def absolute?(path) ArubaPath.new(path).absolute? end |
#all_directories ⇒ Array
Return all existing directories in current directory
87 88 89 |
# File 'lib/aruba/api/filesystem.rb', line 87 def all_directories list('.').select { |p| directory? p }.map { |p| (p) } end |
#all_files ⇒ Array
Return all existing files in current directory
79 80 81 |
# File 'lib/aruba/api/filesystem.rb', line 79 def all_files list('.').select { |p| file? p }.map { |p| (p) } end |
#all_paths ⇒ Array
Return all existing paths (directories, files) in current dir
71 72 73 |
# File 'lib/aruba/api/filesystem.rb', line 71 def all_paths list('.').map { |p| (p) } end |
#append_to_file(file_name, file_content) ⇒ Object
Append data to file
315 316 317 318 319 320 |
# File 'lib/aruba/api/filesystem.rb', line 315 def append_to_file(file_name, file_content) file_name = (file_name) Aruba.platform.mkdir(File.dirname(file_name)) File.open(file_name, 'a') { |f| f << file_content } end |
#chmod(*args) ⇒ Object
Change file system permissions of file
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 |
# File 'lib/aruba/api/filesystem.rb', line 284 def chmod(*args) args = args.flatten = if args.last.kind_of? Hash args.pop else {} end mode = args.shift mode = if mode.kind_of? String mode.to_i(8) else mode end args.each { |p| raise "Expected #{p} to be present" unless exist?(p) } paths = args.map { |p| (p) } Aruba.platform.chmod(mode, paths, ) self end |
#copy(*args) ⇒ Object
Copy a file and/or directory
rubocop:disable Metrics/CyclomaticComplexity def copy(*source, destination)
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/aruba/api/filesystem.rb', line 175 def copy(*args) args = args.flatten destination = args.pop source = args source.each do |s| raise ArgumentError, %(The following source "#{s}" does not exist.) unless exist? s end raise ArgumentError, "Using a fixture as destination (#{destination}) is not supported" if destination.start_with? aruba.config.fixtures_path_prefix raise ArgumentError, "Multiples sources can only be copied to a directory" if source.count > 1 && exist?(destination) && !directory?(destination) source_paths = source.map { |f| (f) } destination_path = (destination) if source_paths.count > 1 Aruba.platform.mkdir(destination_path) else Aruba.platform.mkdir(File.dirname(destination_path)) source_paths = source_paths.first end Aruba.platform.cp source_paths, destination_path self end |
#create_directory(directory_name) ⇒ Object
Create a directory in current directory
326 327 328 329 330 |
# File 'lib/aruba/api/filesystem.rb', line 326 def create_directory(directory_name) Aruba.platform.mkdir (directory_name) self end |
#directory(path) ⇒ Dir
Create directory object
95 96 97 98 99 |
# File 'lib/aruba/api/filesystem.rb', line 95 def directory(path) fail ArgumentError, %(Path "#{name}" does not exist.) unless exist? name Dir.new((path)) end |
#directory?(file) ⇒ Boolean
Check if directory exist and is directory
37 38 39 |
# File 'lib/aruba/api/filesystem.rb', line 37 def directory?(file) Aruba.platform.directory? (file) end |
#disk_usage(*paths) ⇒ Object
Calculate disk usage for file(s) and/or directories
It shows the disk usage for a single file/directory. If multiple paths are given, it sum their size up.
375 376 377 378 379 |
# File 'lib/aruba/api/filesystem.rb', line 375 def disk_usage(*paths) expect(paths.flatten).to Aruba::Matchers.all be_an_existing_path Aruba.platform.determine_disk_usage paths.flatten.map { |p| ArubaPath.new((p)) }, aruba.config.physical_block_size end |
#executable?(path) ⇒ Boolean
Check if file exist and is executable
45 46 47 48 49 |
# File 'lib/aruba/api/filesystem.rb', line 45 def executable?(path) path = (path) Aruba.platform.file?(path) && Aruba.platform.executable?(path) end |
#exist?(file_or_directory) ⇒ Boolean
Check if file or directory exist
21 22 23 |
# File 'lib/aruba/api/filesystem.rb', line 21 def exist?(file_or_directory) Aruba.platform.exist? (file_or_directory) end |
#file?(file) ⇒ Boolean
Check if file exist and is file
29 30 31 |
# File 'lib/aruba/api/filesystem.rb', line 29 def file?(file) Aruba.platform.file? (file) end |
#file_size(name) ⇒ Numeric
Get size of file
385 386 387 388 389 |
# File 'lib/aruba/api/filesystem.rb', line 385 def file_size(name) expect(name).to be_an_existing_file Aruba.platform.determine_file_size (name) end |
#list(name) ⇒ Array
Return content of directory
105 106 107 108 109 110 111 112 113 |
# File 'lib/aruba/api/filesystem.rb', line 105 def list(name) fail ArgumentError, %(Path "#{name}" does not exist.) unless exist? name fail ArgumentError, %(Only directories are supported. Path "#{name}" is not a directory.) unless directory? name existing_files = Dir.glob((File.join(name, '**', '*'))) current_working_directory = ArubaPath.new(('.')) existing_files.map { |d| ArubaPath.new(d).relative_path_from(current_working_directory).to_s } end |
#move(*args) ⇒ Object
Move a file and/or directory
rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/MethodLength
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 |
# File 'lib/aruba/api/filesystem.rb', line 216 def move(*args) args = args.flatten destination = args.pop source = args source.each do |s| raise ArgumentError, "Using a fixture as source (#{source}) is not supported" if s.start_with? aruba.config.fixtures_path_prefix end raise ArgumentError, "Using a fixture as destination (#{destination}) is not supported" if destination.start_with? aruba.config.fixtures_path_prefix source.each do |s| raise ArgumentError, %(The following source "#{s}" does not exist.) unless exist? s end raise ArgumentError, "Multiple sources can only be copied to a directory" if source.count > 1 && exist?(destination) && !directory?(destination) source_paths = source.map { |f| (f) } destination_path = (destination) if source_paths.count > 1 Aruba.platform.mkdir(destination_path) else Aruba.platform.mkdir(File.dirname(destination_path)) source_paths = source_paths.first end Aruba.platform.mv source_paths, destination_path self end |
#overwrite_file(name, content) ⇒ Object
Create a file with given content
The method does check if file already exists and fails if the file is missing. If the file name is a path the method will create all neccessary directories.
271 272 273 274 275 |
# File 'lib/aruba/api/filesystem.rb', line 271 def overwrite_file(name, content) Aruba.platform.create_file((name), content, true) self end |
#read(name) ⇒ Array
Return content of file
119 120 121 122 123 124 |
# File 'lib/aruba/api/filesystem.rb', line 119 def read(name) fail ArgumentError, %(Path "#{name}" does not exist.) unless exist? name fail ArgumentError, %(Only files are supported. Path "#{name}" is not a file.) unless file? name File.readlines((name)).map(&:chomp) end |
#relative?(path) ⇒ TrueClass, FalseClass
Check if path is relative
63 64 65 |
# File 'lib/aruba/api/filesystem.rb', line 63 def relative?(path) ArubaPath.new(path).relative? end |
#remove(*args) ⇒ Object
Remove file or directory
336 337 338 339 340 341 342 343 344 345 346 347 348 |
# File 'lib/aruba/api/filesystem.rb', line 336 def remove(*args) args = args.flatten = if args.last.kind_of? Hash args.pop else {} end args = args.map { |p| (p) } Aruba.platform.rm(args, ) end |
#touch(*args) ⇒ Object
Create an empty file
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/aruba/api/filesystem.rb', line 146 def touch(*args) args = args.flatten = if args.last.kind_of? Hash args.pop else {} end args.each { |p| create_directory(File.dirname(p)) } Aruba.platform.touch(args.map { |p| (p) }, ) self end |
#with_file_content(file) { ... } ⇒ Object
Read content of file and yield the content to block
357 358 359 360 361 362 363 |
# File 'lib/aruba/api/filesystem.rb', line 357 def with_file_content(file, &block) expect(file).to be_an_existing_path content = read(file).join("\n") yield(content) end |
#write_file(name, content) ⇒ Object
Create a file with given content
The method does not check if file already exists. If the file name is a path the method will create all neccessary directories.
136 137 138 139 140 |
# File 'lib/aruba/api/filesystem.rb', line 136 def write_file(name, content) Aruba.platform.create_file((name), content, false) self end |
#write_fixed_size_file(name, size) ⇒ Object
Create a file with the given size
The method does not check if file already exists. If the file name is a path the method will create all neccessary directories.
260 261 262 263 264 |
# File 'lib/aruba/api/filesystem.rb', line 260 def write_fixed_size_file(name, size) Aruba.platform.create_fixed_size_file((name), size, false) self end |