Files

Class/Module Index [+]

Quicksearch

Chef::Knife::List

Public Instance Methods

add_dir_result(result) click to toggle source
# File lib/chef/knife/list.rb, line 54
def add_dir_result(result)
  begin
    children = result.children.sort_by { |child| child.name }
  rescue Chef::ChefFS::FileSystem::NotFoundError
    STDERR.puts "#{format_path(result.path)}: No such file or directory"
    return []
  end

  result = [ [ result, children ] ]
  if config[:recursive]
    children.each do |child|
      if child.dir?
        result += add_dir_result(child)
      end
    end
  end
  result
end
list_dirs_recursive(children) click to toggle source
# File lib/chef/knife/list.rb, line 73
def list_dirs_recursive(children)
  results = children.select { |child| child.dir? }.to_a
  results.each do |child|
    results += list_dirs_recursive(child.children)
  end
  results
end
run() click to toggle source
# File lib/chef/knife/list.rb, line 20
def run
  patterns = name_args.length == 0 ? [""] : name_args

  # Get the matches (recursively)
  results = []
  dir_results = []
  pattern_args_from(patterns).each do |pattern|
    Chef::ChefFS::FileSystem.list(chef_fs, pattern) do |result|
      if result.dir? && !config[:bare_directories]
        dir_results += add_dir_result(result)
      elsif result.exists?
        results << result
      elsif pattern.exact_path
        STDERR.puts "#{format_path(result.path)}: No such file or directory"
      end
    end
  end

  results = results.sort_by { |result| result.path }
  dir_results = dir_results.sort_by { |result| result[0].path }

  if results.length == 0 && dir_results.length == 1
    results = dir_results[0][1]
    dir_results = []
  end

  print_result_paths results
  dir_results.each do |result, children|
    puts ""
    puts "#{format_path(result.path)}:"
    print_results(children.map { |result| result.name }.sort, "")
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.