stove 2.0.0.beta.1 → 2.0.0.beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9e3e8effc89249cc85ef1bbb409edc1b17ae623b
4
- data.tar.gz: a01bd5570bc5651d738a5e31c36ed032e3ce1c75
3
+ metadata.gz: 1d576bd5d791bfa1f3a6119bc0a2da2ba5576d8a
4
+ data.tar.gz: 951ed197d25bb581336f69da68d8509baf1f678a
5
5
  SHA512:
6
- metadata.gz: 2cae616ad8cd9526e80365f4590640152afa2c411eac9a5c3b0c6028afcb7a710e3cf6549947b0e19ffd18eb16872cec997a3cdafbab172c2d79ff69ba0f0a6c
7
- data.tar.gz: ef5adf673f387952bba98a73d5ea8875fb1bb9610feb9841c15d02b431934fff20124b82cbcd845995aa940589de110c6f1de3b9f8aaad23a3838842b6792c69
6
+ metadata.gz: 8504c7fc94657dcff042bdc86458099fb30a30e9d9b279c145df1f443aa7286a37474b4f7a00211b56199759a336dcc016f14e22a96c241d940ea891d4359693
7
+ data.tar.gz: 6f3a76458636021f386cb1d47b939f1864bf8e43d76a6a23b160803ade0f52ef956430bd0ef0f1afd3eec2f6624af69e0ba478dd681f051f996715c38beeca9a
data/CHANGELOG.md CHANGED
@@ -18,6 +18,7 @@ v2.0.0 (unreleased)
18
18
  - Improve rake task to automatically perfom a minor bump when no version if given
19
19
  - Persist data across the cookbook object
20
20
  - Use singleton classes to save memory and loadtime
21
+ - Force a non-broken version of log4r
21
22
 
22
23
  v1.1.0
23
24
  ------
data/README.md CHANGED
@@ -78,15 +78,16 @@ You can always use the `--help` flag to get information:
78
78
  Usage: bake x.y.z
79
79
 
80
80
  Actions:
81
- --no-bump Perform a version bump the local version automatically
82
- --no-changelog Generate and prompt for a CHANGELOG
83
- --no-dev Bump a minor version release for development purposes
84
- --no-upload Upload the cookbook to the community site
81
+ --[no-]bump [Don't] Perform a version bump the local version automatically
82
+ --[no-]changelog [Don't] Generate and prompt for a CHANGELOG
83
+ --[no-]dev [Don't] Bump a minor version release for development purposes
84
+ --[no-]upload [Don't] Execute upload stages of enabled plugins
85
85
 
86
86
  Plugins:
87
- --no-git Tag and push to a git remote
88
- --no-github Publish the release to GitHub
89
- --no-jira Resolve JIRA issues
87
+ --[no-]community [Don't] Upload to the community site
88
+ --[no-]git [Don't] Tag and push to a git remote
89
+ --[no-]github [Don't] Publish the release to GitHub
90
+ --[no-]jira [Don't] Resolve JIRA issues
90
91
 
91
92
  Global Options:
92
93
  --locale [LANGUAGE] Change the language to output messages
@@ -32,6 +32,13 @@ Feature: Changelog
32
32
  * I successfully run `bake 1.0.0 --changelog --bump`
33
33
  * the file "CHANGELOG.md" should contain "v1.0.0"
34
34
 
35
+ Scenario: With a hyphenated cookbook name
36
+ * I have a cookbook named "bacon-maple-bars"
37
+ * the environment variable "EDITOR" is "cat"
38
+ * I successfully run `bake 1.0.0 --changelog --bump`
39
+ * the file "CHANGELOG.md" should contain "bacon-maple-bars Changelog"
40
+ * the file "CHANGELOG.md" should contain "v1.0.0"
41
+
35
42
  Scenario: With the git plugin
36
43
  * I have a cookbook named "bacon" with git support
37
44
  * the environment variable "EDITOR" is "cat"
@@ -5,42 +5,20 @@ Feature: Upload
5
5
  * I have a cookbook named "bacon"
6
6
  * I am using the community server
7
7
 
8
- Scenario: When the configuration does not exist
9
- * I run `bake --upload`
10
- * it should fail with "configuration for the Chef community site does not exist"
11
-
12
- Scenario: When the username does not exist
13
- * the Stove config at "community._" is ""
14
- * I run `bake --upload`
15
- * it should fail with "does not contain a username"
16
-
17
- Scenario: When the key does not exist
18
- * the Stove config at "community.username" is "bobo"
19
- * I run `bake --upload`
20
- * it should fail with "does not contain a key"
21
-
22
- Scenario: When the category does not exist
23
- * the Stove config at "community.username" is "bobo"
24
- * the Stove config at "community.key" is "../../features/support/stove.pem"
25
- * I run `bake --upload`
26
- * it should fail with "You did not specify a category"
27
-
28
- Scenario: In isolation
29
- * the Stove config at "community.username" is "bobo"
30
- * the Stove config at "community.key" is "../../features/support/stove.pem"
31
- * the community server has the cookbook:
32
- | bacon | 1.2.3 | Application |
33
- * I successfully run `bake --upload`
34
-
35
8
  Scenario: With the git plugin
36
9
  * I have a cookbook named "bacon" with git support
37
10
  * the Stove config at "community.username" is "bobo"
38
11
  * the Stove config at "community.key" is "../../features/support/stove.pem"
39
12
  * the community server has the cookbook:
40
13
  | bacon | 1.2.3 | Application |
41
- * I successfully run `bake --git --upload`
14
+ * I successfully run `bake --git --upload --community`
42
15
  * the git remote should have the tag "v0.0.0"
43
16
 
17
+ Scenario: With the git plugin and the upload action disabled
18
+ * I have a cookbook named "bacon" with git support
19
+ * I successfully run `bake --git --no-upload`
20
+ * the git remote should not have the tag "v0.0.0"
21
+
44
22
  @wip
45
23
  Scenario: With the GitHub plugin
46
24
 
@@ -0,0 +1,40 @@
1
+ Feature: Community
2
+ Background:
3
+ * the Stove config is empty
4
+ * the CLI options are all off
5
+ * I have a cookbook named "bacon"
6
+ * I am using the community server
7
+
8
+ Scenario: When the configuration does not exist
9
+ * I run `bake --upload --community`
10
+ * it should fail with "configuration for the Chef community site does not exist"
11
+
12
+ Scenario: When the username does not exist
13
+ * the Stove config at "community._" is ""
14
+ * I run `bake --upload --community`
15
+ * it should fail with "does not contain a username"
16
+
17
+ Scenario: When the key does not exist
18
+ * the Stove config at "community.username" is "bobo"
19
+ * I run `bake --upload --community`
20
+ * it should fail with "does not contain a key"
21
+
22
+ Scenario: When the category does not exist
23
+ * the Stove config at "community.username" is "bobo"
24
+ * the Stove config at "community.key" is "../../features/support/stove.pem"
25
+ * I run `bake --upload --community`
26
+ * it should fail with "You did not specify a category"
27
+
28
+ Scenario: In isolation
29
+ * the Stove config at "community.username" is "bobo"
30
+ * the Stove config at "community.key" is "../../features/support/stove.pem"
31
+ * the community server has the cookbook:
32
+ | bacon | 1.2.3 | Application |
33
+ * I successfully run `bake --upload --community`
34
+
35
+ Scenario: When the community plugin is explicitly disabled
36
+ * the Stove config at "community.username" is "bobo"
37
+ * the Stove config at "community.key" is "../../features/support/stove.pem"
38
+ * I successfully run `bake --upload --no-community`
39
+ * the community server will not have the cookbook:
40
+ | bacon | | |
@@ -22,3 +22,8 @@ Feature: git Plugin
22
22
  * the remote repository has additional commits
23
23
  * I run `bake --git`
24
24
  * it should fail with "out of sync with the remote repository"
25
+
26
+ Scenario: When a git upload should be done
27
+ * I have a cookbook named "bacon" with git support
28
+ * I successfully run `bake --upload --git`
29
+ * the git remote should have the tag "v0.0.0"
@@ -1,12 +1,12 @@
1
- Given /^I have a cookbook named "(\w+)" at version "([\d\.]+)"$/ do |name, version|
1
+ Given /^I have a cookbook named "([\w\-]+)" at version "([\d\.]+)"$/ do |name, version|
2
2
  create_cookbook(name, version)
3
3
  end
4
4
 
5
- Given /^I have a cookbook named "(\w+)"$/ do |name|
5
+ Given /^I have a cookbook named "([\w\-]+)"$/ do |name|
6
6
  create_cookbook(name, '0.0.0')
7
7
  end
8
8
 
9
- Given /^I have a cookbook named "(\w+)" with git support$/ do |name|
9
+ Given /^I have a cookbook named "([\w\-]+)" with git support$/ do |name|
10
10
  create_cookbook(name, '0.0.0', git: true)
11
11
  end
12
12
 
@@ -23,8 +23,8 @@ def create_cookbook(name, version, options = {})
23
23
  cd(name)
24
24
 
25
25
  write_file('CHANGELOG.md', <<-EOH.gsub(/^ {4}/, ''))
26
- Changelog
27
- =========
26
+ #{name} Changelog
27
+ =================
28
28
 
29
29
  v#{version} (#{Time.now.to_date})
30
30
  ----------------------------
@@ -8,7 +8,7 @@ module Stove
8
8
  end
9
9
 
10
10
  validate(:incremented) do
11
- version = Gem::Version.new(options[:version])
11
+ version = Gem::Version.new(options[:version].dup)
12
12
  Gem::Requirement.new("> #{cookbook.version}").satisfied_by?(version)
13
13
  end
14
14
 
@@ -9,7 +9,7 @@ module Stove
9
9
 
10
10
  validate(:format) do
11
11
  lines = File.read('CHANGELOG.md')
12
- lines.match(/^[\w\s]+\n=+(.*\n)+v[0-9\.]+(\ \(.+\))?\n\-+/)
12
+ lines.match(/^[\w\s\-]+\n=+(.*\n)+v[0-9\.]+(\ \(.+\))?\n\-+/)
13
13
  end
14
14
 
15
15
  validate(:editor) do
@@ -1,27 +1,11 @@
1
1
  module Stove
2
2
  class Action::Upload < Action::Base
3
3
  id 'upload'
4
- description 'Upload the cookbook to the community site'
5
-
6
- validate(:configuration) do
7
- Config.has_key?(:community)
8
- end
9
-
10
- validate(:username) do
11
- Config[:community].has_key?(:username)
12
- end
13
-
14
- validate(:key) do
15
- Config[:community].has_key?(:key)
16
- end
17
-
18
- validate(:category) do
19
- !cookbook.category.nil?
20
- end
4
+ description 'Publish the release to enabled plugin destinations'
21
5
 
22
6
  def run
23
- log.info('Uploading to the Chef community site')
24
- Community.upload(cookbook)
7
+ log.debug('Running upload hooks...')
8
+ log.info('Done!')
25
9
  end
26
10
  end
27
11
  end
data/lib/stove/cli.rb CHANGED
@@ -36,6 +36,11 @@ module Stove
36
36
  # no cookbook at the given path
37
37
  cookbook = Cookbook.new(options[:path])
38
38
 
39
+ # Set the category on the cookbook object if one was given
40
+ if category = options.delete(:category)
41
+ cookbook.category = category
42
+ end
43
+
39
44
  # Now execute the actual runners (validations and errors might occur)
40
45
  Runner.run(cookbook, options)
41
46
 
data/lib/stove/config.rb CHANGED
@@ -55,7 +55,7 @@ module Stove
55
55
  if value.is_a?(Hash)
56
56
  [key, sanitize(value)]
57
57
  else
58
- if key =~ /acecss|token|password/
58
+ if key =~ /access|token|password/
59
59
  [key, '[FILTERED]']
60
60
  else
61
61
  [key, value]
@@ -37,6 +37,14 @@ module Stove
37
37
  #
38
38
  attr_reader :metadata
39
39
 
40
+ #
41
+ # Set the category for this cookbook
42
+ #
43
+ # @param [String]
44
+ # the name of the category (values are restricted by the Community Site)
45
+ #
46
+ attr_writer :category
47
+
40
48
  #
41
49
  # The changeset for this cookbook. This is written by the changelog
42
50
  # generator and read by various plugins.
@@ -0,0 +1,26 @@
1
+ module Stove
2
+ class Plugin::Community < Plugin::Base
3
+ id 'community'
4
+ description 'Publish the release to the Chef community site'
5
+
6
+ validate(:configuration) do
7
+ Config.has_key?(:community)
8
+ end
9
+
10
+ validate(:username) do
11
+ Config[:community].has_key?(:username)
12
+ end
13
+
14
+ validate(:key) do
15
+ Config[:community].has_key?(:key)
16
+ end
17
+
18
+ validate(:category) do
19
+ !cookbook.category.nil?
20
+ end
21
+
22
+ after(:upload, 'Publishing the release to the Chef community site') do
23
+ Community.upload(cookbook)
24
+ end
25
+ end
26
+ end
@@ -99,8 +99,7 @@ module Stove
99
99
  @repo_url = $1.to_s
100
100
  .strip
101
101
  .gsub(/\.git$/, '')
102
- .gsub(':', '/')
103
- .gsub('@', '://')
102
+ .gsub(/^\S+@(\S+):/, 'https://\1/')
104
103
  .gsub('git://', 'https://')
105
104
  @repo_url
106
105
  end
data/lib/stove/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Stove
2
- VERSION = '2.0.0.beta.1'
2
+ VERSION = '2.0.0.beta.2'
3
3
  end
data/lib/stove.rb CHANGED
@@ -43,10 +43,11 @@ module Stove
43
43
  end
44
44
 
45
45
  module Plugin
46
- autoload :Base, 'stove/plugins/base'
47
- autoload :Git, 'stove/plugins/git'
48
- autoload :GitHub, 'stove/plugins/github'
49
- autoload :JIRA, 'stove/plugins/jira'
46
+ autoload :Base, 'stove/plugins/base'
47
+ autoload :Community, 'stove/plugins/community'
48
+ autoload :Git, 'stove/plugins/git'
49
+ autoload :GitHub, 'stove/plugins/github'
50
+ autoload :JIRA, 'stove/plugins/jira'
50
51
  end
51
52
 
52
53
  #
data/locales/en.yml CHANGED
@@ -179,10 +179,9 @@ en:
179
179
  }
180
180
  }
181
181
 
182
-
183
- # Upload validations
182
+ # Community validations
184
183
  # ---------------------
185
- upload:
184
+ community:
186
185
  configuration: >
187
186
  The Stove configuration for the Chef community site does not exist! In
188
187
  order to perform operations against the Chef community site, you must
data/stove.gemspec CHANGED
@@ -19,10 +19,13 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  # Runtime dependencies
22
- spec.add_dependency 'faraday', '~> 0.8'
23
- spec.add_dependency 'faraday_middleware', '~> 0.9'
22
+ spec.add_dependency 'faraday', '~> 0.8.9'
23
+ spec.add_dependency 'faraday_middleware', '~> 0.9.0'
24
24
  spec.add_dependency 'i18n', '~> 0.6'
25
- spec.add_dependency 'log4r', '~> 1.1'
25
+
26
+ # Because log4r doesn't know the meaning of fucking NON-BREAKING bug fixes
27
+ # in patch releases.
28
+ spec.add_dependency 'log4r', '~> 1.1', '< 1.1.11'
26
29
  spec.add_dependency 'minitar', '~> 0.5'
27
30
  spec.add_dependency 'mixlib-authentication', '~> 1.3'
28
31
  spec.add_dependency 'octokit', '~> 2.7'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stove
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta.1
4
+ version: 2.0.0.beta.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seth Vargo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-28 00:00:00.000000000 Z
11
+ date: 2014-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '0.8'
19
+ version: 0.8.9
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: '0.8'
26
+ version: 0.8.9
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday_middleware
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0.9'
33
+ version: 0.9.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '0.9'
40
+ version: 0.9.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: i18n
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +59,9 @@ dependencies:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.1'
62
+ - - <
63
+ - !ruby/object:Gem::Version
64
+ version: 1.1.11
62
65
  type: :runtime
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
@@ -66,6 +69,9 @@ dependencies:
66
69
  - - ~>
67
70
  - !ruby/object:Gem::Version
68
71
  version: '1.1'
72
+ - - <
73
+ - !ruby/object:Gem::Version
74
+ version: 1.1.11
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: minitar
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -213,6 +219,7 @@ files:
213
219
  - features/actions/changelog.feature
214
220
  - features/actions/dev.feature
215
221
  - features/actions/upload.feature
222
+ - features/plugins/community.feature
216
223
  - features/plugins/git.feature
217
224
  - features/rake.feature
218
225
  - features/step_definitions/cli_steps.rb
@@ -251,6 +258,7 @@ files:
251
258
  - lib/stove/mixins/validatable.rb
252
259
  - lib/stove/packager.rb
253
260
  - lib/stove/plugins/base.rb
261
+ - lib/stove/plugins/community.rb
254
262
  - lib/stove/plugins/git.rb
255
263
  - lib/stove/plugins/github.rb
256
264
  - lib/stove/plugins/jira.rb
@@ -281,7 +289,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
289
  version: 1.3.1
282
290
  requirements: []
283
291
  rubyforge_project:
284
- rubygems_version: 2.2.0
292
+ rubygems_version: 2.2.1
285
293
  signing_key:
286
294
  specification_version: 4
287
295
  summary: A simple gem for packaging, releasing, and sanity-checking an Opscode community
@@ -292,6 +300,7 @@ test_files:
292
300
  - features/actions/changelog.feature
293
301
  - features/actions/dev.feature
294
302
  - features/actions/upload.feature
303
+ - features/plugins/community.feature
295
304
  - features/plugins/git.feature
296
305
  - features/rake.feature
297
306
  - features/step_definitions/cli_steps.rb