Module: FeduxOrgStdlib::Filesystem Deprecated

Defined in:
lib/fedux_org_stdlib/filesystem.rb

Overview

Deprecated.

Please use github.com/cucumber/aruba instead

File system

Instance Method Summary collapse

Instance Method Details

#cleanup_working_directoryObject

Clean up test directory



40
41
42
43
# File 'lib/fedux_org_stdlib/filesystem.rb', line 40

def cleanup_working_directory
  delete_working_directory
  create_working_directory
end

#create_directory(*dirs) ⇒ String, Array

Create directory(ies)

Parameters:

  • dirs (String, Array)

    the directories to be created, multiple arguments are possible as well

Returns:

  • (String, Array)

    returns a string if there was only one file given, and an array with muliple files



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/fedux_org_stdlib/filesystem.rb', line 60

def create_directory(*dirs)
  raise_if_forbidden_path_for_create_operation(dirs)

  directories = expand_path(dirs.flatten)
  FileUtils.mkdir_p(directories)

  if directories.size == 1
    return directories.first
  else
    return directories
  end
end

#create_file(path, content = '', mode = 0644) ⇒ String

Create a single file

Parameters:

  • path (String)

    the path for the new file (can include directories)

  • content (String) (defaults to: '')

    the content written to the file

Returns:

  • (String)

    the path to the created file



129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/fedux_org_stdlib/filesystem.rb', line 129

def create_file(path, content = '', mode = 0644)
  raise_if_forbidden_path_for_create_operation(path)

  file = expand_path(path).first
  directory = ::File.dirname(file)

  FileUtils.mkdir_p(directory) unless directory == '.'
  ::File.open(file, 'wb') do |f|
    f.write content
  end

  FileUtils.chmod(mode, file)

  file
end

#create_working_directoryObject

Create temporary directory



30
31
32
# File 'lib/fedux_org_stdlib/filesystem.rb', line 30

def create_working_directory
  FileUtils.mkdir_p(working_directory) unless ::File.exist? working_directory
end

#delete_directory(*dirs) ⇒ String, Array

Delete directory(ies)

Parameters:

  • dirs (String, Array)

    the directories to be deleted, multiple arguments are possible as well

Returns:

  • (String, Array)

    returns a string if there was only one file given, and an array with muliple files



81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/fedux_org_stdlib/filesystem.rb', line 81

def delete_directory(*dirs)
  raise_if_forbidden_path_for_delete_operation(dirs)

  directories = expand_path(dirs.flatten)
  FileUtils.rm_r(directories)

  if directories.size == 1
    return directories.first
  else
    return directories
  end
end

#delete_file(*files) ⇒ String

Delete a single file

Parameters:

  • files (String)

    the path for the new file (can include directories)

Returns:

  • (String)

    the path to the deleted file



152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/fedux_org_stdlib/filesystem.rb', line 152

def delete_file(*files)
  raise_if_forbidden_path_for_delete_operation(files)

  files_to_be_deleted = expand_path(files.flatten)
  FileUtils.rm(files_to_be_deleted)

  if files_to_be_deleted.size == 1
    return files_to_be_deleted.first
  else
    return files_to_be_deleted
  end
end

#delete_working_directoryObject

Delete temporary directory



35
36
37
# File 'lib/fedux_org_stdlib/filesystem.rb', line 35

def delete_working_directory
  FileUtils.rm_rf(working_directory) if ::File.exist? working_directory
end

#expand_path(*paths) ⇒ Array, String

Expand path based on temporary directory

Parameters:

  • paths (String, Array, Multiple Values)

    the paths to be expanded

Returns:



186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/fedux_org_stdlib/filesystem.rb', line 186

def expand_path(*paths)
  raise_if_forbidden_path_for_create_operation(paths)

  paths.flatten.map do |p|
    case p
    when /^~/
      ::File.expand_path(p)
    else
      ::File.join(working_directory, p)
    end
  end
end

#path_does_not_exist?(*paths) ⇒ TrueClass, FalseClass

Check absence of path(s)

Parameters:

  • paths (String, Array)

    which path(s) should be checked, multiple arguments are possible as well

Returns:

  • (TrueClass, FalseClass)

    the result of all checks done



115
116
117
# File 'lib/fedux_org_stdlib/filesystem.rb', line 115

def path_does_not_exist?(*paths)
  !path_exists?(paths)
end

#path_exists?(*paths) ⇒ TrueClass, FalseClass

Check existence of path(s)

Parameters:

  • paths (String, Array)

    which path(s) should be checked, multiple arguments are possible as well

Returns:

  • (TrueClass, FalseClass)

    the result of all checks done



101
102
103
104
105
106
# File 'lib/fedux_org_stdlib/filesystem.rb', line 101

def path_exists?(*paths)
  raise_if_forbidden_path_for_create_operation(paths)

  paths_expanded = expand_path(paths.flatten)
  paths_expanded.flatten.all? { |p| ::File.exist?(p) }
end

#path_matches?(strings, regex, *paths) ⇒ TrueClass, FalseClass

Check if path matches

Parameters:

  • strings (Array, String)

    strings which are checked against paths

  • regex (Array, String)

    regex which is checked against path

  • paths (Array, String)

    the paths to be checked

Returns:

  • (TrueClass, FalseClass)

    true if path is valid, false if invalid



242
243
244
245
246
247
# File 'lib/fedux_org_stdlib/filesystem.rb', line 242

def path_matches?(strings, regex, *paths)
  flattend_paths = paths.flatten
  flattend_strings = strings.flatten

  flattend_paths.any? { |f|  f =~ regex || flattend_strings.include?(f) }
end

#raise_if_forbidden_path_for_create_operation(*paths) ⇒ TrueClass, FalseClass

Check if path is forbidden for delete operation

Parameters:

  • paths (String, Array)

    paths which should be checked

Returns:

  • (TrueClass, FalseClass)

    true if path is forbidden, false if path is not forbidden



206
207
208
209
210
211
212
# File 'lib/fedux_org_stdlib/filesystem.rb', line 206

def raise_if_forbidden_path_for_create_operation(*paths)
  flattend_paths = paths.flatten
  strings = []
  regex = /\.\./

  fail FileSystem::Exceptions::InvalidPath, "Sorry, but you cannot use paths matching \"#{strings.join(', ')}\"  or \"#{regex.inspect}\" here!" if path_matches?(strings, regex, flattend_paths)
end

#raise_if_forbidden_path_for_delete_operation(*paths) ⇒ TrueClass, FalseClass

Check if path is forbidden for delete operation

Parameters:

  • paths (String, Array)

    paths which should be checked

Returns:

  • (TrueClass, FalseClass)

    true if path is forbidden, false if path is not forbidden



221
222
223
224
225
226
227
# File 'lib/fedux_org_stdlib/filesystem.rb', line 221

def raise_if_forbidden_path_for_delete_operation(*paths)
  flattend_paths = paths.flatten
  strings = %w(/)
  regex = /\.\./

  fail FileSystem::Exceptions::InvalidPath, "Sorry, but you cannot use paths matching \"#{strings.join(', ')}\"  or \"#{regex}\" here!" if path_matches?(strings, regex, flattend_paths)
end

#read_file(path) ⇒ String, Binary

Read the content of a file

Parameters:

  • path (String)

    the path to the file

Returns:

  • (String, Binary)

    the content of the file



172
173
174
175
176
177
# File 'lib/fedux_org_stdlib/filesystem.rb', line 172

def read_file(path)
  raise_if_forbidden_path_for_create_operation(path)

  file_path = expand_path(path).first
  ::File.read(file_path)
end

#root_directoryString

The root directory of the project

Returns:

  • (String)

    the root directory



16
17
18
19
# File 'lib/fedux_org_stdlib/filesystem.rb', line 16

def root_directory
  #::File.expand_path('../../../', __FILE__)
  fail Exceptions::InvalidUsageOfLibrary, 'Sorry, but you need to define the root directory yourself'
end

#switch_to_working_directory(&block) ⇒ Object Also known as: in_working_directory

Switch the current working directory to the temporary one and execute code block



47
48
49
# File 'lib/fedux_org_stdlib/filesystem.rb', line 47

def switch_to_working_directory(&block)
  Dir.chdir(working_directory, &block)
end

#working_directoryString

The temporary directory for the project

Returns:

  • (String)

    the directory created for the tests



25
26
27
# File 'lib/fedux_org_stdlib/filesystem.rb', line 25

def working_directory
  ::File.join(root_directory, 'tmp', 'test')
end