Sha256: 7516ae60ed8b9a4df04dea6000f66c6e9985e1c5976d5d62e46d09002b52ddf6

Contents?: true

Size: 1.5 KB

Versions: 7

Compression:

Stored size: 1.5 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 ||= "/" + ChefFS::PathUtils::relative_to(File.absolute_path(Dir.pwd), chef_repo)
    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

7 entries across 7 versions & 1 rubygems

Version Path
knife-essentials-0.6 lib/chef_fs/knife.rb
knife-essentials-0.5.4 lib/chef_fs/knife.rb
knife-essentials-0.5.3 lib/chef_fs/knife.rb
knife-essentials-0.5.2 lib/chef_fs/knife.rb
knife-essentials-0.5.1 lib/chef_fs/knife.rb
knife-essentials-0.5 lib/chef_fs/knife.rb
knife-essentials-0.4 lib/chef_fs/knife.rb