Sha256: 60b5abffbdf5b3b217ced1a564ac19d2307953500268e838520109f2cb43e967

Contents?: true

Size: 1.6 KB

Versions: 4

Compression:

Stored size: 1.6 KB

Contents

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

module ChefFS
  class Knife < Chef::Knife
    def self.common_options
      option :repo_mode,
        :long => '--repo-mode MODE',
        :default => "default",
        :description => "Specifies the local repository layout.  Values: default or full"
    end

    def base_path
      @base_path ||= begin
        relative_to_base = ChefFS::PathUtils::relative_to(File.absolute_path(Dir.pwd), chef_repo)
        relative_to_base == '.' ? '/' : "/#{relative_to_base}"
      end
    end

    def chef_fs
      @chef_fs ||= ChefFS::FileSystem::ChefServerRootDir.new("remote", Chef::Config, config[:repo_mode])
    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::ChefRepositoryFileSystemRootDir.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

4 entries across 4 versions & 1 rubygems

Version Path
knife-essentials-0.7.2 lib/chef_fs/knife.rb
knife-essentials-0.7.1 lib/chef_fs/knife.rb
knife-essentials-0.7 lib/chef_fs/knife.rb
knife-essentials-0.6.1 lib/chef_fs/knife.rb