Class: Packager::Packager
- Inherits:
-
Chef::Knife
- Object
- Chef::Knife
- Packager::Packager
- Defined in:
- lib/chef/knife/packager.rb
Instance Method Summary collapse
- #get_cookbook_name ⇒ Object
- #get_cookbook_version(params) ⇒ Object
- #get_dependencies ⇒ Object
- #get_folder_name ⇒ Object
- #package_files ⇒ Object
- #run ⇒ Object
- #upload_cookbooks(file) ⇒ Object
Instance Method Details
#get_cookbook_name ⇒ Object
83 84 85 86 87 88 89 90 91 |
# File 'lib/chef/knife/packager.rb', line 83 def get_cookbook_name name = IO.read(Berkshelf.).match(/^name.*/).to_s.split('"')[1] if name.nil? return Dir.pwd.split("/")[-1] else return name end end |
#get_cookbook_version(params) ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/chef/knife/packager.rb', line 67 def get_cookbook_version(params) if params return params else IO.read(Berkshelf.).match(/^version.*/).to_s.split('"')[1] end end |
#get_dependencies ⇒ Object
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/chef/knife/packager.rb', line 46 def get_dependencies() puts ui.highline.color "Gathering cookbook dependencies (this will take a minute)", :green STDOUT.sync = true berks = `berks install --path #{@tmp}/cookbooks` unless $?.exitstatus == 0 puts ui.highline.color "Failed to gather dependencies", :red exit 3 end puts berks end |
#get_folder_name ⇒ Object
75 76 77 78 79 80 81 |
# File 'lib/chef/knife/packager.rb', line 75 def get_folder_name if @config.project_name return @config.project_name else get_cookbook_name end end |
#package_files ⇒ Object
57 58 59 60 61 62 63 64 65 |
# File 'lib/chef/knife/packager.rb', line 57 def package_files puts ui.highline.color "== Packaging cookbook", :green `cd #{@tmp}; tar zcf #{get_cookbook_name}.#{@cookbook_version}.tgz ./cookbooks` unless $?.exitstatus == 0 puts ui.highline.color "Failed to archive cookbooks", :red exit 3 end return "#{@tmp}/#{get_cookbook_name}.#{@cookbook_version}.tgz" end |
#run ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/chef/knife/packager.rb', line 33 def run $stdout.sync = true @cookbook_version = get_cookbook_version(config[:"version-override"]) Berkshelf::Config.new @config = VoxConfig.new(Dir.pwd) @tmp = Dir.mktmpdir get_dependencies pkg = package_files upload_cookbooks(pkg) FileUtils.remove_entry_secure(@tmp) end |
#upload_cookbooks(file) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/chef/knife/packager.rb', line 93 def upload_cookbooks(file) service = S3::Service.new({ :access_key_id => @config.aws_key, :secret_access_key => @config.aws_secret }) bucket = service.buckets.find(@config.bucket_name) puts ui.highline.color "== Uploading cookbook [#{file}]", :green ## Only upload files, we're not interested in directories if File.file?(file) remote_file = "#{get_folder_name}/#{file.split("/")[-1]}" begin obj = bucket.objects.find_first(remote_file) if yes? "This cookbook version already exists, do you want to overwrite it ?", :red puts ui.highline.color "== Ok, we'll overwrite it", :green else puts ui.highline.color "== Ok, exiting", :green exit 0 end rescue obj = nil end puts ui.highline.color "== Uploading http://#{@config.bucket_name}/#{get_folder_name}/#{file.split("/")[-1]}", :blue obj = bucket.objects.build(remote_file) obj.content = open(file) obj.content_type = MIME::Types.type_for(file).to_s obj.save end puts ui.highline.color "== Done syncing #{file.split('/')[-1]}",:green end |