lib/chef/knife/kitchen.rb in knife-solo-0.0.14 vs lib/chef/knife/kitchen.rb in knife-solo-0.0.15

- old
+ new

@@ -3,19 +3,44 @@ class Chef class Knife class Kitchen < Knife include FileUtils + deps do + require 'knife-solo/knife_solo_error' + end + banner "knife kitchen NAME or initialize current directory with '.'" def run - name = @name_args.first - mkdir name if name != '.' - %w(nodes roles data_bags site-cookbooks cookbooks).each do |dir| - mkdir name + "/#{dir}" - touch name + "/#{dir}/.gitkeep" + raise KnifeSolo::KnifeSoloError.new(banner) unless base = @name_args.first + + create_kitchen base + create_cupboards base, %w(nodes roles data_bags site-cookbooks cookbooks) + create_solo_config base + end + + private + + def create_cupboards(base, dirs) + dirs.each do |dir| + cupboard_dir = File.join(base, dir) + unless File.exist?(cupboard_dir) + mkdir cupboard_dir + touch File.join(cupboard_dir, '.gitkeep') + end end - File.open(name + "/solo.rb", 'w') do |f| + end + + def create_kitchen(base) + mkdir base unless base == '.' + end + + def create_solo_config(base) + solo_file = File.join(base, 'solo.rb') + return if File.exist? solo_file + + File.open(solo_file, 'w') do |f| f << <<-RUBY.gsub(/^ {12}/, '') file_cache_path "/tmp/chef-solo" data_bag_path "/tmp/chef-solo/data_bags" encrypted_data_bag_secret "/tmp/chef-solo/data_bag_key" cookbook_path [ "/tmp/chef-solo/site-cookbooks",