labs-deployer 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,4 +16,10 @@ Gem::Specification.new do |gem|
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
+
20
+
21
+
22
+ gem.add_dependency('s3')
23
+ gem.add_dependency('thor')
24
+
19
25
  end
data/lib/labs-deployer.rb CHANGED
@@ -13,11 +13,7 @@ require 's3'
13
13
 
14
14
  class Solo < Thor
15
15
 
16
- #Berkshelf.load_config
17
16
  Berkshelf::Config.new
18
- AWS_ACCESS_KEY_ID = Chef::Config[:knife][:aws_access_key_id]
19
- AWS_SECRET_ACCESS_KEY = Chef::Config[:knife][:aws_secret_access_key]
20
- AWS_BUCKET = Chef::Config[:knife][:bucket]
21
17
 
22
18
  desc "package", "package and deploy a cookbook"
23
19
 
@@ -31,26 +27,23 @@ class Solo < Thor
31
27
 
32
28
  def get_dependencies()
33
29
  say "Gathering cookbook dependencies", :green
34
- `mkdir -p /tmp/berkshelf-tmp`
35
- invoke("berkshelf:install", [], path: "/tmp/berkshelf-tmp", berksfile: "./Berksfile")
30
+ FileUtils.rm_rf("/tmp/cookbooks")
31
+ invoke("berkshelf:install", [], path: "/tmp/cookbooks", berksfile: "./Berksfile")
36
32
  end
37
33
 
38
34
  def package_files
39
- say "Packaging cookbook", :green
40
- `tar zcf #{get_cookbook_name}.#{get_cookbook_version}.tgz -C /tmp/berkshelf-tmp .`
41
- FileUtils.mv "#{get_cookbook_name}.#{get_cookbook_version}.tgz", '/tmp'
35
+ say "== Packaging cookbook", :green
36
+ `cd /tmp; tar zcf #{get_cookbook_name}.#{get_cookbook_version}.tgz ./cookbooks`
42
37
  return "/tmp/#{get_cookbook_name}.#{get_cookbook_version}.tgz"
43
38
  end
44
39
 
45
40
  def upload_cookbooks(file)
46
41
  service = S3::Service.new({
47
- :access_key_id => AWS_ACCESS_KEY_ID,
48
- :secret_access_key => AWS_SECRET_ACCESS_KEY
42
+ :access_key_id => Chef::Config[:knife][:aws_access_key_id],
43
+ :secret_access_key => Chef::Config[:knife][:aws_secret_access_key]
49
44
  })
50
-
51
- bucket = service.buckets.find(AWS_BUCKET)
52
-
53
- say "Uploading cookbook [#{file}]", :green
45
+ bucket = service.buckets.find(Chef::Config[:knife][:bucket])
46
+ say "== Uploading cookbook [#{file}]", :green
54
47
 
55
48
  ## Only upload files, we're not interested in directories
56
49
  if File.file?(file)
@@ -59,25 +52,21 @@ class Solo < Thor
59
52
  begin
60
53
  obj = bucket.objects.find_first(remote_file)
61
54
  if yes? "This cookbook version already exists, do you want to overwrite it ?", :red
62
- say "Ok, we'll overwrite it", :green
55
+ say "== Ok, we'll overwrite it", :green
63
56
  else
64
- say "Ok, exiting", :green
57
+ say "== Ok, exiting", :green
65
58
  exit 0
66
59
  end
67
60
  rescue
68
61
  obj = nil
69
62
  end
70
63
 
71
- ## If the object does not exist, or if the MD5 Hash / etag of the file has changed, upload it.
72
- if !obj || (obj.etag != Digest::MD5.hexdigest(File.read(file)))
73
- say "Uploading #{file}", :green
74
- obj = bucket.objects.build(remote_file)
75
- obj.content = open(file)
76
- obj.content_type = MIME::Types.type_for(file).to_s
77
- obj.save
78
- else
79
- say "Skipping duplicate file [ #{file} ]", :yellow
80
- end
64
+ say "== Uploading #{file}", :green
65
+ obj = bucket.objects.build(remote_file)
66
+ obj.content = open(file)
67
+ obj.content_type = MIME::Types.type_for(file).to_s
68
+ obj.save
69
+
81
70
  end
82
71
  say "== Done syncing #{file.split('/')[-1]}",:green
83
72
  end
@@ -87,7 +76,13 @@ class Solo < Thor
87
76
  end
88
77
 
89
78
  def get_cookbook_name
90
- Dir.pwd.split("/")[-1]
79
+ name = IO.read(Berkshelf.find_metadata).match(/^name.*/).to_s.split('"')[1]
80
+ if name.nil?
81
+ return Dir.pwd.split("/")[-1]
82
+ else
83
+ return name
84
+ end
85
+
91
86
  end
92
87
 
93
88
  end
@@ -1,5 +1,5 @@
1
1
  module Labs
2
2
  module Deployer
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: labs-deployer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,40 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-26 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2012-11-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: s3
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: thor
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
14
46
  description: Thor tasks to package chef solo cookbooks
15
47
  email:
16
48
  - johntdyer@gmail.com
@@ -40,7 +72,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
40
72
  version: '0'
41
73
  segments:
42
74
  - 0
43
- hash: -2510999870899918940
75
+ hash: -2226089765112800771
44
76
  required_rubygems_version: !ruby/object:Gem::Requirement
45
77
  none: false
46
78
  requirements:
@@ -49,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
49
81
  version: '0'
50
82
  segments:
51
83
  - 0
52
- hash: -2510999870899918940
84
+ hash: -2226089765112800771
53
85
  requirements: []
54
86
  rubyforge_project:
55
87
  rubygems_version: 1.8.24