summaryrefslogtreecommitdiff
path: root/lib/chef/file_cache.rb
diff options
context:
space:
mode:
authorEzra Zygmuntowicz <ez@engineyard.com>2008-10-08 14:19:52 -0700
committerEzra Zygmuntowicz <ez@engineyard.com>2008-10-08 14:19:52 -0700
commitc5d33c1298834ce40b8fbf344f281045771b5371 (patch)
tree1f0d4c7eab1eb379b544282a7ce48052acf719a5 /lib/chef/file_cache.rb
parent3d14601aea23dee3899d097324875274da419d84 (diff)
downloadchef-c5d33c1298834ce40b8fbf344f281045771b5371.tar.gz
big refactor of the repo layout. move to a chef gem and a chef-server gem all with proper deps
Diffstat (limited to 'lib/chef/file_cache.rb')
-rw-r--r--lib/chef/file_cache.rb203
1 files changed, 0 insertions, 203 deletions
diff --git a/lib/chef/file_cache.rb b/lib/chef/file_cache.rb
deleted file mode 100644
index ea9e17fbb7..0000000000
--- a/lib/chef/file_cache.rb
+++ /dev/null
@@ -1,203 +0,0 @@
-#
-# Author:: Adam Jacob (<adam@hjksolutions.com>)
-# Copyright:: Copyright (c) 2008 HJK Solutions, LLC
-# License:: Apache License, Version 2.0
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-require File.join(File.dirname(__FILE__), "mixin", "params_validate")
-require File.join(File.dirname(__FILE__), "mixin", "create_path")
-require 'json'
-
-class Chef
- class FileCache
- class << self
- include Chef::Mixin::ParamsValidate
- include Chef::Mixin::CreatePath
-
- # Write a file to the File Cache.
- #
- # === Parameters
- # path<String>:: The path to the file you want to put in the cache - should
- # be relative to Chef::Config[:file_cache_path]
- # contents<String>:: A string with the contents you want written to the file
- #
- # === Returns
- # true
- def store(path, contents)
- 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))
- io = File.open(File.join(cache_path, file_name), "w")
- io.print(contents)
- io.close
- true
- end
-
- # Move a file in to the cache. Useful with the REST raw file output.
- #
- # === Parameteres
- # file<String>:: The path to the file you want in the cache
- # path<String>:: The relative name you want the new file to use
- 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.exists?(file) && File.writable?(file)
- File.rename(
- file,
- File.join(create_cache_path(File.join(file_path_array), true), file_name)
- )
- else
- raise RuntimeError, "Cannot move #{file} to #{path}!"
- end
- end
-
- # Read a file from the File Cache
- #
- # === Parameters
- # path<String>:: The path to the file you want to load - should
- # be relative to Chef::Config[:file_cache_path]
- # read<True/False>:: Whether to return the file contents, or the path.
- # Defaults to true.
- #
- # === Returns
- # String:: A string with the file contents.
- #
- # === Raises
- # Chef::Exception::FileNotFound:: If it cannot find the file in the cache
- def load(path, read=true)
- validate(
- {
- :path => path
- },
- {
- :path => { :kind_of => String }
- }
- )
- cache_path = create_cache_path(path, false)
- raise Chef::Exception::FileNotFound, "Cannot find #{cache_path} for #{path}!" unless File.exists?(cache_path)
- if read
- File.read(cache_path)
- else
- cache_path
- end
- end
-
- # Delete a file from the File Cache
- #
- # === Parameters
- # path<String>:: The path to the file you want to delete - should
- # be relative to Chef::Config[:file_cache_path]
- #
- # === Returns
- # true
- def delete(path)
- validate(
- {
- :path => path
- },
- {
- :path => { :kind_of => String },
- }
- )
- cache_path = create_cache_path(path, false)
- if File.exists?(cache_path)
- File.unlink(cache_path)
- end
- true
- end
-
- # List all the files in the Cache
- #
- # === Returns
- # Array:: An array of files in the cache, suitable for use with load, delete and store
- def list()
- keys = Array.new
- Dir[File.join(Chef::Config[:file_cache_path], '**', '*')].each do |f|
- if File.file?(f)
- path = f.match("^#{Chef::Config[:file_cache_path]}\/(.+)")[1]
- keys << path
- end
- end
- keys
- end
-
- # Whether or not this file exists in the Cache
- #
- # === Parameters
- # path:: The path to the file you want to check - is relative
- # to Chef::Config[:file_cache_path]
- #
- # === Returns
- # True:: If the file exists
- # False:: If it does not
- def has_key?(path)
- validate(
- {
- :path => path
- },
- {
- :path => { :kind_of => String },
- }
- )
- full_path = create_cache_path(path, false)
- if File.exists?(full_path)
- true
- else
- false
- end
- end
-
- # 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 Chef::Config[: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
- def create_cache_path(path, create_if_missing=true)
- cache_dir = File.expand_path(File.join(Chef::Config[:file_cache_path], path))
- if create_if_missing
- create_path(cache_dir)
- else
- cache_dir
- end
- end
-
- end
- end
-end \ No newline at end of file