Sha256: 821848e1d52ad179c95c8863ced98e8be7ce1cf5691bc752063e6d9ce7f4cb88

Contents?: true

Size: 1.24 KB

Versions: 2

Compression:

Stored size: 1.24 KB

Contents

require 'chef_fs/file_system/chef_server_root_dir'
require 'chef_fs/file_system/file_system_root_dir'
require 'chef_fs/file_pattern'
require 'chef_fs/path_utils'
require 'chef/config'

module ChefFS
  class Knife < Chef::Knife
    def base_path
      @base_path ||= "/" + ChefFS::PathUtils::relative_to(File.absolute_path(Dir.pwd), chef_repo)
    end

    def chef_fs
      @chef_fs ||= ChefFS::FileSystem::ChefServerRootDir.new("remote", Chef::Config)
    end

    def chef_repo
      @chef_repo ||= File.absolute_path(File.join(Chef::Config.cookbook_path, ".."))
    end

    def format_path(path)
      if path[0,base_path.length] == base_path
        if path == base_path
          return "."
        elsif path[base_path.length] == "/"
          return path[base_path.length + 1, path.length - base_path.length - 1]
        elsif base_path == "/" && path[0] == "/"
          return path[1, path.length - 1]
        end
      end
      path
    end

    def local_fs
      @local_fs ||= ChefFS::FileSystem::FileSystemRootDir.new(chef_repo)
    end

    def pattern_args
      @pattern_args ||= pattern_args_from(name_args)
    end

    def pattern_args_from(args)
      args.map { |arg| ChefFS::FilePattern::relative_to(base_path, arg) }.to_a
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
knife-essentials-0.1.1 lib/chef_fs/knife.rb
knife-essentials-0.1 lib/chef_fs/knife.rb