stove 5.2.0 → 6.0.0
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 +4 -4
- data/CHANGELOG.md +13 -0
- data/bin/stove +1 -0
- data/features/plugins/community.feature +7 -7
- data/features/plugins/git.feature +1 -1
- data/features/step_definitions/community_steps.rb +2 -2
- data/lib/stove.rb +2 -2
- data/lib/stove/cli.rb +3 -3
- data/lib/stove/cookbook.rb +3 -3
- data/lib/stove/cookbook/metadata.rb +1 -1
- data/lib/stove/error.rb +4 -3
- data/lib/stove/plugins/git.rb +2 -0
- data/lib/stove/plugins/supermarket.rb +18 -0
- data/lib/stove/runner.rb +1 -1
- data/lib/stove/{community.rb → supermarket.rb} +9 -9
- data/lib/stove/version.rb +1 -1
- data/spec/unit/error_spec.rb +4 -4
- data/templates/errors/git_tagging_failed.erb +5 -0
- data/templates/errors/{cookbook_already_exists.erb → supermarket_already_exists.erb} +0 -0
- data/templates/errors/supermarket_key_validation_failed.erb +3 -0
- data/templates/errors/{community_username_validation_failed.erb → supermarket_username_validation_failed.erb} +1 -1
- metadata +9 -10
- data/bin/bake +0 -6
- data/lib/stove/plugins/community.rb +0 -18
- data/templates/errors/community_key_validation_failed.erb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 390277d48cb42db0d622b67242398c2356a64caa
|
4
|
+
data.tar.gz: 5d62fb5adb3ab6433d2dd3a2cae863833e52ebda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5434acb284472d0f408b3e14215942faa47acb190a88147b1d651a54520d19bdd7e55fa5c6932af26de61f4baadf37c676c7e3413bce4d24c834172789812906
|
7
|
+
data.tar.gz: c9df46d77f1c1b61aa22e865ad1df556d8b34f87927019bdc877b3ec5ba0a0cb84459d0f94bc680c867a4a4a816ad5c9009fdf8f579126d205775c020e9cec15
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,19 @@
|
|
2
2
|
|
3
3
|
This is the Changelog for the Stove gem.
|
4
4
|
|
5
|
+
## v6.0.0
|
6
|
+
|
7
|
+
### Breaking Changes
|
8
|
+
|
9
|
+
- All references to the Community site have been renamed to Supermarket. This includes the name of the `community` plugin and all `Community` classes references within the code. This should not be a breaking change unless your developing against stove as a library.
|
10
|
+
- The long ago deprecated `bake` command has been removed.
|
11
|
+
|
12
|
+
### Other Changes
|
13
|
+
|
14
|
+
- Git tagging errors now include more useful error messaging.
|
15
|
+
- The help command now better describes `--no-git` and `--endpoint` flags.
|
16
|
+
- For developers running stove from the git repository, the application now properly loads stove from the repository instead of from an installed gem.
|
17
|
+
|
5
18
|
## v5.2.0 (2017-05-12)
|
6
19
|
|
7
20
|
- Support for uploading to Artifactory
|
data/bin/stove
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: Supermarket
|
2
2
|
Background:
|
3
3
|
* I have a cookbook named "bacon"
|
4
4
|
|
@@ -13,25 +13,25 @@ Feature: Community
|
|
13
13
|
* it should fail with "requires a private key"
|
14
14
|
|
15
15
|
Scenario: With the default parameters
|
16
|
-
* the
|
16
|
+
* the supermarket has the cookbook:
|
17
17
|
| bacon | 1.2.3 |
|
18
18
|
* I successfully run `stove --no-git`
|
19
|
-
* the
|
19
|
+
* the supermarket will have the cookbooks:
|
20
20
|
| bacon | 0.0.0 |
|
21
21
|
|
22
22
|
Scenario: Yanking a cookbook
|
23
|
-
* the
|
23
|
+
* the supermarket has the cookbooks:
|
24
24
|
| bacon | 1.2.3 |
|
25
25
|
* I successfully run `stove yank -l debug`
|
26
|
-
* the
|
26
|
+
* the supermarket will not have the cookbooks:
|
27
27
|
| bacon | 1.2.3 |
|
28
28
|
* the output should contain "Successfully yanked bacon!"
|
29
29
|
|
30
30
|
Scenario: Yanking a cookbook by name
|
31
|
-
* the
|
31
|
+
* the supermarket has the cookbooks:
|
32
32
|
| eggs | 4.5.6 |
|
33
33
|
* I successfully run `stove yank eggs`
|
34
|
-
* the
|
34
|
+
* the supermarket will not have the cookbooks:
|
35
35
|
| eggs | 4.5.6 |
|
36
36
|
* the output should not contain "Successfully yanked bacon!"
|
37
37
|
* the output should contain "Successfully yanked eggs!"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
Given /^the
|
1
|
+
Given /^the supermarket has the cookbooks?:$/ do |table|
|
2
2
|
table.raw.each do |name, version|
|
3
3
|
version ||= '0.0.0'
|
4
4
|
|
@@ -10,7 +10,7 @@ Given /^the community server has the cookbooks?:$/ do |table|
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
Then /^the
|
13
|
+
Then /^the supermarket will( not)? have the cookbooks?:$/ do |negate, table|
|
14
14
|
table.raw.each do |name, version|
|
15
15
|
cookbook = CommunityZero::RSpec.store.find(name, version)
|
16
16
|
|
data/lib/stove.rb
CHANGED
@@ -3,7 +3,7 @@ require 'pathname'
|
|
3
3
|
|
4
4
|
module Stove
|
5
5
|
autoload :Artifactory, 'stove/artifactory'
|
6
|
-
autoload :
|
6
|
+
autoload :Supermarket, 'stove/supermarket'
|
7
7
|
autoload :Config, 'stove/config'
|
8
8
|
autoload :Cookbook, 'stove/cookbook'
|
9
9
|
autoload :Cli, 'stove/cli'
|
@@ -31,7 +31,7 @@ module Stove
|
|
31
31
|
module Plugin
|
32
32
|
autoload :Artifactory, 'stove/plugins/artifactory'
|
33
33
|
autoload :Base, 'stove/plugins/base'
|
34
|
-
autoload :
|
34
|
+
autoload :Supermarket, 'stove/plugins/supermarket'
|
35
35
|
autoload :Git, 'stove/plugins/git'
|
36
36
|
end
|
37
37
|
|
data/lib/stove/cli.rb
CHANGED
@@ -55,7 +55,7 @@ module Stove
|
|
55
55
|
if @argv.first == 'yank'
|
56
56
|
name = @argv[1] || Cookbook.new(options[:path]).name
|
57
57
|
|
58
|
-
if
|
58
|
+
if Supermarket.yank(name)
|
59
59
|
@stdout.puts "Successfully yanked #{name}!"
|
60
60
|
@kernel.exit(0)
|
61
61
|
else
|
@@ -101,14 +101,14 @@ module Stove
|
|
101
101
|
opts.separator ''
|
102
102
|
opts.separator 'Plugins:'
|
103
103
|
|
104
|
-
opts.on('--no-git', 'Do not use the git plugin') do
|
104
|
+
opts.on('--no-git', 'Do not use the git plugin. Skips tagging if specified.') do
|
105
105
|
options[:no_git] = true
|
106
106
|
end
|
107
107
|
|
108
108
|
opts.separator ''
|
109
109
|
opts.separator 'Upload Options:'
|
110
110
|
|
111
|
-
opts.on('--endpoint [URL]', '
|
111
|
+
opts.on('--endpoint [URL]', 'Supermarket endpoint') do |v|
|
112
112
|
options[:endpoint] = v
|
113
113
|
end
|
114
114
|
|
data/lib/stove/cookbook.rb
CHANGED
@@ -17,7 +17,7 @@ module Stove
|
|
17
17
|
|
18
18
|
#
|
19
19
|
# The name of the cookbook (must correspond to the name of the
|
20
|
-
# cookbook on the
|
20
|
+
# cookbook on the Supermarket).
|
21
21
|
#
|
22
22
|
# @return [String]
|
23
23
|
#
|
@@ -71,7 +71,7 @@ module Stove
|
|
71
71
|
end
|
72
72
|
|
73
73
|
#
|
74
|
-
# Deterine if this cookbook version is released on the
|
74
|
+
# Deterine if this cookbook version is released on the Supermarket
|
75
75
|
#
|
76
76
|
# @warn
|
77
77
|
# This is a fairly expensive operation and the result cannot be
|
@@ -82,7 +82,7 @@ module Stove
|
|
82
82
|
# site, false otherwise
|
83
83
|
#
|
84
84
|
def released?
|
85
|
-
|
85
|
+
Supermarket.cookbook(name, version)
|
86
86
|
true
|
87
87
|
rescue ChefAPI::Error::HTTPNotFound
|
88
88
|
false
|
@@ -5,7 +5,7 @@ module Stove
|
|
5
5
|
# Borrowed and modified from:
|
6
6
|
# {https://raw.github.com/opscode/chef/11.4.0/lib/chef/cookbook/metadata.rb}
|
7
7
|
#
|
8
|
-
# Copyright:: Copyright 2008-
|
8
|
+
# Copyright:: Copyright 2008-2017 Chef Software, Inc.
|
9
9
|
#
|
10
10
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
11
11
|
# you may not use this file except in compliance with the License.
|
data/lib/stove/error.rb
CHANGED
@@ -38,15 +38,16 @@ module Stove
|
|
38
38
|
end
|
39
39
|
|
40
40
|
class GitFailed < StoveError; end
|
41
|
+
class GitTaggingFailed < StoveError; end
|
41
42
|
class MetadataNotFound < StoveError; end
|
42
43
|
class ServerUnavailable < StoveError; end
|
43
44
|
class CookbookAlreadyExists < StoveError; end
|
44
45
|
|
45
46
|
# Validations
|
46
47
|
class ValidationFailed < StoveError; end
|
47
|
-
class
|
48
|
-
class
|
49
|
-
class
|
48
|
+
class SupermarketCategoryValidationFailed < ValidationFailed; end
|
49
|
+
class SupermarketKeyValidationFailed < ValidationFailed; end
|
50
|
+
class SupermarketUsernameValidationFailed < ValidationFailed; end
|
50
51
|
class GitCleanValidationFailed < ValidationFailed; end
|
51
52
|
class GitRepositoryValidationFailed < ValidationFailed; end
|
52
53
|
class GitUpToDateValidationFailed < ValidationFailed; end
|
data/lib/stove/plugins/git.rb
CHANGED
@@ -34,11 +34,13 @@ module Stove
|
|
34
34
|
private
|
35
35
|
|
36
36
|
def git(command, errors = true)
|
37
|
+
log.debug("the command matches")
|
37
38
|
log.debug("Running `git #{command}', errors: #{errors}")
|
38
39
|
Dir.chdir(cookbook.path) do
|
39
40
|
response = %x|git #{command}|
|
40
41
|
|
41
42
|
if errors && !$?.success?
|
43
|
+
raise Error::GitTaggingFailed.new(command: command) if command =~ /^tag/
|
42
44
|
raise Error::GitFailed.new(command: command)
|
43
45
|
end
|
44
46
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Stove
|
2
|
+
class Plugin::Supermarket < Plugin::Base
|
3
|
+
id 'supermarket'
|
4
|
+
description 'Publish the release to the Chef Supermarket'
|
5
|
+
|
6
|
+
validate(:username) do
|
7
|
+
Config.username
|
8
|
+
end
|
9
|
+
|
10
|
+
validate(:key) do
|
11
|
+
Config.key
|
12
|
+
end
|
13
|
+
|
14
|
+
run('Publishing the release to the Chef Supermarket') do
|
15
|
+
Supermarket.upload(cookbook, options[:extended_metadata])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/stove/runner.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'chef-api'
|
2
2
|
|
3
3
|
module Stove
|
4
|
-
class
|
4
|
+
class Supermarket
|
5
5
|
include Mixin::Instanceable
|
6
6
|
include Mixin::Optionable
|
7
7
|
|
8
8
|
#
|
9
|
-
# The default endpoint where the
|
9
|
+
# The default endpoint where the Supermarket lives.
|
10
10
|
#
|
11
11
|
# @return [String]
|
12
12
|
#
|
@@ -17,19 +17,19 @@ module Stove
|
|
17
17
|
# and version.
|
18
18
|
#
|
19
19
|
# @example Find a cookbook by name
|
20
|
-
#
|
20
|
+
# Supermarket.cookbook('apache2') #=> {...}
|
21
21
|
#
|
22
22
|
# @example Find a cookbook by name and version
|
23
|
-
#
|
23
|
+
# Supermarket.cookbook('apache2', '1.0.0') #=> {...}
|
24
24
|
#
|
25
25
|
# @example Find a non-existent cookbook
|
26
|
-
#
|
26
|
+
# Supermarket.cookbook('not-real') #=> Community::BadResponse
|
27
27
|
#
|
28
|
-
# @raise [
|
29
|
-
# if the given cookbook (or cookbook version) does not exist on the
|
28
|
+
# @raise [Supermarket::BadResponse]
|
29
|
+
# if the given cookbook (or cookbook version) does not exist on the Supermarket
|
30
30
|
#
|
31
31
|
# @param [String] name
|
32
|
-
# the name of the cookbook on the
|
32
|
+
# the name of the cookbook on the Supermarket
|
33
33
|
# @param [String] version (optional)
|
34
34
|
# the version of the cookbook to find
|
35
35
|
#
|
@@ -63,7 +63,7 @@ module Stove
|
|
63
63
|
end
|
64
64
|
|
65
65
|
#
|
66
|
-
# Delete the given cookbook from the
|
66
|
+
# Delete the given cookbook from the supermarket.
|
67
67
|
#
|
68
68
|
# @param [String] name
|
69
69
|
# the name of the cookbook to delete
|
data/lib/stove/version.rb
CHANGED
data/spec/unit/error_spec.rb
CHANGED
@@ -49,12 +49,12 @@ module Stove::Error
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
describe
|
52
|
+
describe SupermarketKeyValidationFailed do
|
53
53
|
it 'raises an exception with the correct message' do
|
54
54
|
expect { raise described_class }.to raise_error { |error|
|
55
55
|
expect(error).to be_a(described_class)
|
56
56
|
expect(error.message).to eq <<-EOH.gsub(/^ {10}/, '')
|
57
|
-
You did not specify the path to a private key! The Chef
|
57
|
+
You did not specify the path to a private key! The Chef Supermarket requires a private key for authentication:
|
58
58
|
|
59
59
|
stove --key ~/.chef/sethvargo.pem
|
60
60
|
EOH
|
@@ -62,12 +62,12 @@ module Stove::Error
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
describe
|
65
|
+
describe SupermarketUsernameValidationFailed do
|
66
66
|
it 'raises an exception with the correct message' do
|
67
67
|
expect { raise described_class }.to raise_error { |error|
|
68
68
|
expect(error).to be_a(described_class)
|
69
69
|
expect(error.message).to eq <<-EOH.gsub(/^ {10}/, '')
|
70
|
-
You did not specify the username to authenticate with! The Chef
|
70
|
+
You did not specify the username to authenticate with! The Chef Supermarket requires a username for authentication:
|
71
71
|
|
72
72
|
stove --username sethvargo
|
73
73
|
EOH
|
File without changes
|
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:
|
4
|
+
version: 6.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seth Vargo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-api
|
@@ -140,7 +140,6 @@ description: A utility for releasing Chef community cookbooks
|
|
140
140
|
email:
|
141
141
|
- sethvargo@gmail.com
|
142
142
|
executables:
|
143
|
-
- bake
|
144
143
|
- stove
|
145
144
|
extensions: []
|
146
145
|
extra_rdoc_files: []
|
@@ -152,7 +151,6 @@ files:
|
|
152
151
|
- LICENSE
|
153
152
|
- README.md
|
154
153
|
- Rakefile
|
155
|
-
- bin/bake
|
156
154
|
- bin/stove
|
157
155
|
- features/plugins/community.feature
|
158
156
|
- features/plugins/git.feature
|
@@ -167,7 +165,6 @@ files:
|
|
167
165
|
- lib/stove.rb
|
168
166
|
- lib/stove/artifactory.rb
|
169
167
|
- lib/stove/cli.rb
|
170
|
-
- lib/stove/community.rb
|
171
168
|
- lib/stove/config.rb
|
172
169
|
- lib/stove/cookbook.rb
|
173
170
|
- lib/stove/cookbook/metadata.rb
|
@@ -181,10 +178,11 @@ files:
|
|
181
178
|
- lib/stove/packager.rb
|
182
179
|
- lib/stove/plugins/artifactory.rb
|
183
180
|
- lib/stove/plugins/base.rb
|
184
|
-
- lib/stove/plugins/community.rb
|
185
181
|
- lib/stove/plugins/git.rb
|
182
|
+
- lib/stove/plugins/supermarket.rb
|
186
183
|
- lib/stove/rake_task.rb
|
187
184
|
- lib/stove/runner.rb
|
185
|
+
- lib/stove/supermarket.rb
|
188
186
|
- lib/stove/util.rb
|
189
187
|
- lib/stove/validator.rb
|
190
188
|
- lib/stove/version.rb
|
@@ -201,16 +199,17 @@ files:
|
|
201
199
|
- stove.gemspec
|
202
200
|
- templates/errors/abstract_method.erb
|
203
201
|
- templates/errors/artifactory_key_validation_failed.erb
|
204
|
-
- templates/errors/community_key_validation_failed.erb
|
205
|
-
- templates/errors/community_username_validation_failed.erb
|
206
|
-
- templates/errors/cookbook_already_exists.erb
|
207
202
|
- templates/errors/git_clean_validation_failed.erb
|
208
203
|
- templates/errors/git_failed.erb
|
209
204
|
- templates/errors/git_repository_validation_failed.erb
|
205
|
+
- templates/errors/git_tagging_failed.erb
|
210
206
|
- templates/errors/git_up_to_date_validation_failed.erb
|
211
207
|
- templates/errors/metadata_not_found.erb
|
212
208
|
- templates/errors/server_unavailable.erb
|
213
209
|
- templates/errors/stove_error.erb
|
210
|
+
- templates/errors/supermarket_already_exists.erb
|
211
|
+
- templates/errors/supermarket_key_validation_failed.erb
|
212
|
+
- templates/errors/supermarket_username_validation_failed.erb
|
214
213
|
homepage: https://github.com/sethvargo/stove
|
215
214
|
licenses:
|
216
215
|
- Apache 2.0
|
@@ -231,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
230
|
version: '0'
|
232
231
|
requirements: []
|
233
232
|
rubyforge_project:
|
234
|
-
rubygems_version: 2.6.
|
233
|
+
rubygems_version: 2.6.13
|
235
234
|
signing_key:
|
236
235
|
specification_version: 4
|
237
236
|
summary: A command-line utility for releasing Chef community cookbooks
|
data/bin/bake
DELETED
@@ -1,18 +0,0 @@
|
|
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(:username) do
|
7
|
-
Config.username
|
8
|
-
end
|
9
|
-
|
10
|
-
validate(:key) do
|
11
|
-
Config.key
|
12
|
-
end
|
13
|
-
|
14
|
-
run('Publishing the release to the Chef community site') do
|
15
|
-
Community.upload(cookbook, options[:extended_metadata])
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|