Class: Chef::FileCache
- Inherits:
-
Object
- Object
- Chef::FileCache
- Extended by:
- Mixin::CreatePath, Mixin::ParamsValidate
- Defined in:
- lib/chef/file_cache.rb
Class Method Summary collapse
-
.create_cache_path(path, create_if_missing = true) ⇒ Object
Create a full path to a given file in the cache.
-
.delete(path) ⇒ Object
Delete a file from the File Cache.
-
.find(glob_pattern) ⇒ Object
Find files in the cache by +glob_pattern+ === Returns [String] - An array of file cache keys matching the glob.
-
.key?(path) ⇒ Boolean
(also: has_key?)
Whether or not this file exists in the Cache.
-
.list ⇒ Object
List all the files in the Cache.
-
.load(path, read = true) ⇒ Object
Read a file from the File Cache.
-
.move_to(file, path) ⇒ Object
Move a file into the cache.
-
.store(path, contents, perm = 0640) ⇒ Object
Write a file to the File Cache.
Methods included from Mixin::CreatePath
Methods included from Mixin::ParamsValidate
Class Method Details
.create_cache_path(path, create_if_missing = true) ⇒ Object
Create a full path to a given file in the cache. By default, also creates the path if it does not exist.
=== Parameters path:: The path to create, relative to file_cache_path create_if_missing:: True by default - whether to create the path if it does not exist
=== Returns String:: The fully expanded path
207 208 209 210 211 212 213 214 |
# File 'lib/chef/file_cache.rb', line 207 def create_cache_path(path, create_if_missing = true) cache_dir = File.(File.join(file_cache_path, path)) if create_if_missing create_path(cache_dir) else cache_dir end end |
.delete(path) ⇒ Object
Delete a file from the File Cache
=== Parameters
path
=== Returns true
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/chef/file_cache.rb', line 132 def delete(path) validate( { path: path, }, { path: { kind_of: String }, } ) cache_path = create_cache_path(path, false) if File.exist?(cache_path) File.unlink(cache_path) end true end |
.find(glob_pattern) ⇒ Object
Find files in the cache by +glob_pattern+ === Returns [String] - An array of file cache keys matching the glob
160 161 162 163 164 165 166 167 168 |
# File 'lib/chef/file_cache.rb', line 160 def find(glob_pattern) keys = [] Dir[File.join(Chef::Util::PathHelper.escape_glob_dir(file_cache_path), glob_pattern)].each do |f| if File.file?(f) keys << f[/^#{Regexp.escape(Dir[Chef::Util::PathHelper.escape_glob_dir(file_cache_path)].first) + File::Separator}(.+)/, 1] end end keys end |
.key?(path) ⇒ Boolean Also known as: has_key?
Whether or not this file exists in the Cache
=== Parameters path:: The path to the file you want to check - is relative to file_cache_path
=== Returns True:: If the file exists False:: If it does not
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 |
# File 'lib/chef/file_cache.rb', line 179 def key?(path) validate( { path: path, }, { path: { kind_of: String }, } ) full_path = create_cache_path(path, false) if File.exist?(full_path) true else false end end |
.list ⇒ Object
List all the files in the Cache
=== Returns Array:: An array of files in the cache, suitable for use with load, delete and store
152 153 154 |
# File 'lib/chef/file_cache.rb', line 152 def list find("**#{File::Separator}*") end |
.load(path, read = true) ⇒ Object
Read a file from the File Cache
=== Parameters
path
=== Returns String:: A string with the file contents, or the path to the file.
=== Raises Chef::Exceptions::FileNotFound:: If it cannot find the file in the cache
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/chef/file_cache.rb', line 105 def load(path, read = true) validate( { path: path, }, { path: { kind_of: String }, } ) cache_path = create_cache_path(path, false) raise Chef::Exceptions::FileNotFound, "Cannot find #{cache_path} for #{path}!" unless File.exist?(cache_path) if read File.read(cache_path) else cache_path end end |
.move_to(file, path) ⇒ Object
Move a file into the cache. Useful with the REST raw file output.
=== Parameters
file
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/chef/file_cache.rb', line 68 def move_to(file, path) validate( { file: file, path: path, }, { file: { kind_of: String }, path: { kind_of: String }, } ) file_path_array = File.split(path) file_name = file_path_array.pop if File.exist?(file) && File.writable?(file) FileUtils.mv( file, File.join(create_cache_path(File.join(file_path_array), true), file_name) ) else raise "Cannot move #{file} to #{path}!" end end |
.store(path, contents, perm = 0640) ⇒ Object
Write a file to the File Cache.
=== Parameters
path
=== Returns true
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/chef/file_cache.rb', line 42 def store(path, contents, perm = 0640) validate( { path: path, contents: contents, }, { path: { kind_of: String }, contents: { kind_of: String }, } ) file_path_array = File.split(path) file_name = file_path_array.pop cache_path = create_cache_path(File.join(file_path_array)) File.open(File.join(cache_path, file_name), "w", perm) do |io| io.print(contents) end true end |