pact_broker-client 1.7.0 → 1.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a8305e2cc46298df3b6b08f4209aacef58f9fd1b
4
- data.tar.gz: 61f58e6adb4dcf2911aa031d4ecd58a48042c7a4
3
+ metadata.gz: 06c73ab8a4906ce7f19c0239159954dc0dabafe8
4
+ data.tar.gz: bfb34a47d2bdad5ce202fd87a8ceb9528744a2af
5
5
  SHA512:
6
- metadata.gz: ff29557b0f7134e880bd7748ed4ac2e5b6c1fdfdc3f58ea1a8423213a914ddb4a1509b0c49943c8570c28db4bc9520c1e91fe88354341f52619f1cf4ab40ff96
7
- data.tar.gz: 98656507dcf1571631e1c377fa28b0d2bc8780412a707615ade09c56f30918bbf682a2b8a8ab5ba943d7ae7ead971c25b790450c25a7fead68e010c12b4ca9ec
6
+ metadata.gz: 1c26067119ce4860e20625220ac490e02456d8f60816b12ba59857dd1f89778fa1b8e009e82adf57b5f213ad535357ce781b32c41b892120ba15067e24c6d1e7
7
+ data.tar.gz: fbcb42c1b2ad4794e9f82e5dbea3703b816e62d4a2019c2e4d41f7d7b974e9afc3419fb17184ce49fec1bb3ba63c89aa33bdc3a7497947fc3c9694f4c1684c9e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ <a name="v1.8.0"></a>
2
+ ### v1.8.0 (2017-10-19)
3
+
4
+ #### Features
5
+
6
+ * renamed `pact-publish` command to `pact-broker publish` ([ed7d23a](/../../commit/ed7d23a))
7
+
8
+ #### Bug Fixes
9
+
10
+ * **pact-publish**
11
+ * ensure process exits with a status 1 when error is raised ([800f5cd](/../../commit/800f5cd))
12
+
1
13
  <a name="v1.7.0"></a>
2
14
  ### v1.7.0 (2017-10-19)
3
15
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- pact_broker-client (1.7.0)
4
+ pact_broker-client (1.8.0)
5
5
  httparty
6
6
  json
7
7
  table_print (~> 1.5)
@@ -17,8 +17,6 @@ GEM
17
17
  rake
18
18
  thor (>= 0.14.0)
19
19
  awesome_print (1.8.0)
20
- byebug (9.1.0)
21
- coderay (1.1.2)
22
20
  conventional-changelog (1.3.0)
23
21
  crack (0.4.3)
24
22
  safe_yaml (~> 1.0.0)
@@ -30,7 +28,6 @@ GEM
30
28
  httparty (0.15.6)
31
29
  multi_xml (>= 0.5.2)
32
30
  json (2.1.0)
33
- method_source (0.9.0)
34
31
  multi_xml (0.6.0)
35
32
  pact (1.16.1)
36
33
  json (> 1.8.5)
@@ -62,12 +59,6 @@ GEM
62
59
  rspec (>= 2.14)
63
60
  term-ansicolor (~> 1.0)
64
61
  thor
65
- pry (0.11.2)
66
- coderay (~> 1.1.0)
67
- method_source (~> 0.9.0)
68
- pry-byebug (3.5.0)
69
- byebug (~> 9.1)
70
- pry (~> 0.10)
71
62
  public_suffix (3.0.0)
72
63
  rack (2.0.3)
73
64
  rack-test (0.6.3)
@@ -108,7 +99,6 @@ DEPENDENCIES
108
99
  fakefs (~> 0.4)
109
100
  pact (~> 1.16)
110
101
  pact_broker-client!
111
- pry-byebug
112
102
  rake (~> 10.0.3)
113
103
  webmock (~> 3.0)
114
104
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- pact_broker-client (1.7.0)
4
+ pact_broker-client (1.8.0)
5
5
  httparty
6
6
  json
7
7
  table_print (~> 1.5)
@@ -17,8 +17,6 @@ GEM
17
17
  rake
18
18
  thor (>= 0.14.0)
19
19
  awesome_print (1.8.0)
20
- byebug (9.1.0)
21
- coderay (1.1.2)
22
20
  conventional-changelog (1.3.0)
23
21
  crack (0.4.3)
24
22
  safe_yaml (~> 1.0.0)
@@ -29,7 +27,6 @@ GEM
29
27
  httparty (0.15.6)
30
28
  multi_xml (>= 0.5.2)
31
29
  json (2.1.0)
32
- method_source (0.9.0)
33
30
  multi_xml (0.6.0)
34
31
  pact (1.16.1)
35
32
  json (> 1.8.5)
@@ -60,12 +57,6 @@ GEM
60
57
  rspec (>= 2.14)
61
58
  term-ansicolor (~> 1.0)
62
59
  thor
63
- pry (0.11.2)
64
- coderay (~> 1.1.0)
65
- method_source (~> 0.9.0)
66
- pry-byebug (3.5.0)
67
- byebug (~> 9.1)
68
- pry (~> 0.10)
69
60
  public_suffix (3.0.0)
70
61
  rack (1.6.8)
71
62
  rack-test (0.6.3)
@@ -106,7 +97,6 @@ DEPENDENCIES
106
97
  fakefs (~> 0.4)
107
98
  pact (~> 1.16)
108
99
  pact_broker-client!
109
- pry-byebug
110
100
  rack (< 2.0)
111
101
  rake (~> 10.0.3)
112
102
  webmock (~> 3.0)
@@ -1,12 +1,17 @@
1
1
  require 'pact_broker/client/can_i_deploy'
2
2
  require 'pact_broker/client/version'
3
3
  require 'pact_broker/client/cli/version_selector_options_parser'
4
- require 'thor'
4
+ require 'pact_broker/client/cli/custom_thor'
5
+ require 'pact_broker/client/publish_pacts'
6
+ require 'rake/file_list'
5
7
 
6
8
  module PactBroker
7
9
  module Client
8
10
  module CLI
9
- class Broker < Thor
11
+ # Thor::Error will have its backtrace hidden
12
+ class PactPublicationError < ::Thor::Error; end
13
+
14
+ class Broker < CustomThor
10
15
  desc 'can-i-deploy', "Returns exit code 0 or 1, indicating whether or not the specified application versions are compatible."
11
16
 
12
17
  method_option :name, required: true, aliases: "-n", desc: "The application name. Use once for each pacticipant being checked."
@@ -24,12 +29,63 @@ module PactBroker
24
29
  exit(1) unless result.success
25
30
  end
26
31
 
32
+ desc 'publish PACT_DIRS_OR_FILES ...', "Publish pacts to a Pact Broker."
33
+ method_option :consumer_app_version, required: true, aliases: "-a", desc: "The consumer application version"
34
+ method_option :broker_base_url, required: true, aliases: "-b", desc: "The base URL of the Pact Broker"
35
+ method_option :broker_username, aliases: "-u", desc: "Pact Broker basic auth username"
36
+ method_option :broker_password, aliases: "-p", desc: "Pact Broker basic auth password"
37
+ method_option :tag, aliases: "-t", type: :array, banner: "TAG", desc: "Tag name for consumer version. Can be specified multiple times."
38
+ method_option :verbose, aliases: "-v", desc: "Verbose output", :required => false
39
+
40
+ def publish(*pact_files)
41
+ validate_pact_files(pact_files)
42
+ success = publish_pacts(pact_files)
43
+ raise PactPublicationError, "One or more pacts failed to be published" unless success
44
+ rescue PactBroker::Client::Error => e
45
+ raise PactPublicationError, "#{e.class} - #{e.message}"
46
+ end
47
+
27
48
  desc 'version', "Show the pact_broker-client gem version"
28
49
  def version
29
50
  $stdout.puts PactBroker::Client::VERSION
30
51
  end
31
52
 
32
53
  no_commands do
54
+
55
+ def self.exit_on_failure?
56
+ true
57
+ end
58
+
59
+ def validate_pact_files pact_files
60
+ unless pact_files && pact_files.any?
61
+ raise RequiredArgumentMissingError, "No value provided for required pact_files"
62
+ end
63
+ end
64
+
65
+ def publish_pacts pact_files
66
+ PactBroker::Client::PublishPacts.call(
67
+ options.broker_base_url,
68
+ file_list(pact_files),
69
+ options.consumer_app_version,
70
+ tags,
71
+ pact_broker_client_options
72
+ )
73
+ end
74
+
75
+ def file_list pact_files
76
+ Rake::FileList[pact_files].collect do | path |
77
+ if File.directory?(path)
78
+ Rake::FileList[File.join(path, "*.json")]
79
+ else
80
+ path
81
+ end
82
+ end.flatten
83
+ end
84
+
85
+ def tags
86
+ [*options.tag].compact
87
+ end
88
+
33
89
  def pact_broker_client_options
34
90
  if options.broker_username
35
91
  {
@@ -6,9 +6,7 @@ module PactBroker
6
6
  ##
7
7
  # Custom Thor task allows the following:
8
8
  #
9
- # `script arg1 arg2` to be interpreted as `script <default_task> arg1 arg2`
10
9
  # `--option 1 --option 2` to be interpreted as `--option 1 2` (the standard Thor format for multiple value options)
11
- # `script --help` to display the help for the default task instead of the command list
12
10
  #
13
11
  class CustomThor < ::Thor
14
12
 
@@ -17,24 +15,8 @@ module PactBroker
17
15
  super(massage_args(given_args))
18
16
  end
19
17
 
20
- def help *args
21
- if args.empty?
22
- super(self.class.default_task)
23
- else
24
- super
25
- end
26
- end
27
-
28
18
  def self.massage_args argv
29
- prepend_default_task_name(turn_muliple_tag_options_into_array(argv))
30
- end
31
-
32
- def self.prepend_default_task_name argv
33
- if known_first_arguments.include?(argv[0])
34
- argv
35
- else
36
- [default_command] + argv
37
- end
19
+ turn_muliple_tag_options_into_array(argv)
38
20
  end
39
21
 
40
22
  # other task names, help, and the help shortcuts
@@ -23,8 +23,8 @@ module PactBroker
23
23
  rescue RescuableError => e
24
24
  tries += 1
25
25
  $stderr.puts "Error making request - #{e.message}, attempt #{tries} of #{max_tries}"
26
- sleep options
27
26
  raise e if max_tries == tries
27
+ sleep options
28
28
  end
29
29
  end
30
30
  end
@@ -1,5 +1,5 @@
1
1
  module PactBroker
2
2
  module Client
3
- VERSION = '1.7.0'
3
+ VERSION = '1.8.0'
4
4
  end
5
5
  end
@@ -31,5 +31,4 @@ Gem::Specification.new do |gem|
31
31
  gem.add_development_dependency 'webmock', '~> 3.0'
32
32
  gem.add_development_dependency 'conventional-changelog'
33
33
  gem.add_development_dependency 'pact', '~> 1.16'
34
- gem.add_development_dependency 'pry-byebug'
35
34
  end
@@ -1,7 +1,7 @@
1
- require 'pact_broker/client/cli/publish'
1
+ require 'pact_broker/client/cli/broker'
2
2
 
3
3
  module PactBroker::Client::CLI
4
- describe Publish do
4
+ describe Broker do
5
5
  describe ".broker" do
6
6
  before do
7
7
  allow(PactBroker::Client::PublishPacts).to receive(:call).and_return(true)
@@ -17,7 +17,7 @@ module PactBroker::Client::CLI
17
17
  }
18
18
  end
19
19
 
20
- let(:invoke_broker) { subject.broker(*file_list) }
20
+ let(:invoke_broker) { subject.publish(*file_list) }
21
21
 
22
22
  context "with minimum valid options" do
23
23
  it "invokes the PublishPacts command" do
@@ -26,7 +26,7 @@ module PactBroker::Client::CLI
26
26
  ["spec/support/cli_test_pacts/foo.json"],
27
27
  "1.2.3",
28
28
  [],
29
- {}
29
+ {verbose: nil}
30
30
  )
31
31
  invoke_broker
32
32
  end
@@ -24,42 +24,11 @@ module PactBroker::Client::CLI
24
24
  describe CustomThor do
25
25
  subject { TestThor.new }
26
26
 
27
- it "invokes the default task when aguments are given without specifying a task" do
28
- expect(Delegate).to receive(:call).with(argument: 'foo')
29
- TestThor.start(%w{foo})
30
- end
31
-
32
27
  it "converts options that are specified multiple times into a single array" do
33
28
  expect(Delegate).to receive(:call).with({'multi' => ['one', 'two']})
34
29
  TestThor.start(%w{test_multiple_options --multi one --multi two})
35
30
  end
36
31
 
37
- describe ".prepend_default_task_name" do
38
- let(:argv_with) { [TestThor.default_command, 'foo'] }
39
-
40
- context "when the default task name is given" do
41
- it "does not prepend the default task name" do
42
- expect(TestThor.prepend_default_task_name(argv_with)).to eq(argv_with)
43
- end
44
- end
45
-
46
- context "when the first argument is --help" do
47
- let(:argv) { ['--help', 'foo'] }
48
-
49
- it "does not prepend the default task name" do
50
- expect(TestThor.prepend_default_task_name(argv)).to eq(argv)
51
- end
52
- end
53
-
54
- context "when the default task name is not given" do
55
- let(:argv) { ['foo'] }
56
-
57
- it "prepends the default task name" do
58
- expect(TestThor.prepend_default_task_name(argv)).to eq(argv_with)
59
- end
60
- end
61
- end
62
-
63
32
  describe ".turn_muliple_tag_options_into_array" do
64
33
  it "turns '--tag foo --tag bar' into '--tag foo bar'" do
65
34
  input = %w{--ignore this --tag foo --tag bar --wiffle --that}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bethany Skurrie
@@ -136,26 +136,11 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '1.16'
139
- - !ruby/object:Gem::Dependency
140
- name: pry-byebug
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
139
  description: Publishes pacts to, and retrieves pacts from, the pact broker server.
154
140
  email:
155
141
  - bskurrie@dius.com.au
156
142
  executables:
157
143
  - pact-broker
158
- - pact-publish
159
144
  extensions: []
160
145
  extra_rdoc_files: []
161
146
  files:
@@ -169,7 +154,6 @@ files:
169
154
  - RELEASING.md
170
155
  - Rakefile
171
156
  - bin/pact-broker
172
- - bin/pact-publish
173
157
  - ci.sh
174
158
  - doc/markdown/Pact Broker Client - Pact Broker.md
175
159
  - doc/markdown/README.md
@@ -182,7 +166,6 @@ files:
182
166
  - lib/pact_broker/client/can_i_deploy.rb
183
167
  - lib/pact_broker/client/cli/broker.rb
184
168
  - lib/pact_broker/client/cli/custom_thor.rb
185
- - lib/pact_broker/client/cli/publish.rb
186
169
  - lib/pact_broker/client/cli/version_selector_options_parser.rb
187
170
  - lib/pact_broker/client/error.rb
188
171
  - lib/pact_broker/client/matrix.rb
@@ -205,9 +188,9 @@ files:
205
188
  - pact-broker-client.gemspec
206
189
  - spec/lib/pact_broker/client/base_client_spec.rb
207
190
  - spec/lib/pact_broker/client/can_i_deploy_spec.rb
208
- - spec/lib/pact_broker/client/cli/broker_spec.rb
191
+ - spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb
192
+ - spec/lib/pact_broker/client/cli/broker_publish_spec.rb
209
193
  - spec/lib/pact_broker/client/cli/custom_thor_spec.rb
210
- - spec/lib/pact_broker/client/cli/publish_spec.rb
211
194
  - spec/lib/pact_broker/client/cli/version_selector_options_parser_spec.rb
212
195
  - spec/lib/pact_broker/client/matrix/text_formatter_spec.rb
213
196
  - spec/lib/pact_broker/client/matrix_spec.rb
@@ -266,9 +249,9 @@ summary: See description
266
249
  test_files:
267
250
  - spec/lib/pact_broker/client/base_client_spec.rb
268
251
  - spec/lib/pact_broker/client/can_i_deploy_spec.rb
269
- - spec/lib/pact_broker/client/cli/broker_spec.rb
252
+ - spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb
253
+ - spec/lib/pact_broker/client/cli/broker_publish_spec.rb
270
254
  - spec/lib/pact_broker/client/cli/custom_thor_spec.rb
271
- - spec/lib/pact_broker/client/cli/publish_spec.rb
272
255
  - spec/lib/pact_broker/client/cli/version_selector_options_parser_spec.rb
273
256
  - spec/lib/pact_broker/client/matrix/text_formatter_spec.rb
274
257
  - spec/lib/pact_broker/client/matrix_spec.rb
data/bin/pact-publish DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'pact_broker/client/cli/publish'
3
-
4
- PactBroker::Client::CLI::Publish.start
@@ -1,85 +0,0 @@
1
- require 'pact_broker/client/cli/custom_thor'
2
- require 'pact_broker/client/publish_pacts'
3
- require 'pact_broker/client/version'
4
- require 'rake/file_list'
5
-
6
- module PactBroker
7
- module Client
8
- module CLI
9
-
10
- # Thor::Error will have its backtrace hidden
11
- class PactPublicationError < ::Thor::Error; end
12
-
13
- class Publish < CustomThor
14
- desc 'PACT_DIRS_OR_FILES ...', "Publish pacts to a Pact Broker."
15
- method_option :consumer_app_version, required: true, aliases: "-a", desc: "The consumer application version"
16
- method_option :broker_base_url, required: true, aliases: "-b", desc: "The base URL of the Pact Broker"
17
- method_option :broker_username, aliases: "-u", desc: "Pact Broker basic auth username"
18
- method_option :broker_password, aliases: "-p", desc: "Pact Broker basic auth password"
19
- method_option :tag, aliases: "-t", type: :array, banner: "TAG", desc: "Tag name for consumer version. Can be specified multiple times."
20
- method_option :verbose, aliases: "-v", desc: "Verbose output", :required => false
21
-
22
- def broker(*pact_files)
23
- validate(pact_files)
24
- success = publish_pacts(pact_files)
25
- raise PactPublicationError, "One or more pacts failed to be published" unless success
26
- rescue PactBroker::Client::Error => e
27
- raise PactPublicationError, "#{e.class} - #{e.message}"
28
- end
29
-
30
- desc 'version', "Show the pact_broker-client gem version"
31
- def version
32
- $stdout.puts PactBroker::Client::VERSION
33
- end
34
-
35
- default_task :broker
36
-
37
- no_commands do
38
-
39
- def validate pact_files
40
- unless pact_files && pact_files.any?
41
- raise RequiredArgumentMissingError, "No value provided for required pact_files"
42
- end
43
- end
44
-
45
- def publish_pacts pact_files
46
- PactBroker::Client::PublishPacts.call(
47
- options.broker_base_url,
48
- file_list(pact_files),
49
- options.consumer_app_version,
50
- tags,
51
- pact_broker_client_options
52
- )
53
- end
54
-
55
- def file_list pact_files
56
- Rake::FileList[pact_files].collect do | path |
57
- if File.directory?(path)
58
- Rake::FileList[File.join(path, "*.json")]
59
- else
60
- path
61
- end
62
- end.flatten
63
- end
64
-
65
- def tags
66
- [*options.tag].compact
67
- end
68
-
69
- def pact_broker_client_options
70
- if options.broker_password
71
- {
72
- basic_auth: {
73
- username: options.broker_username,
74
- password: options.broker_password
75
- }
76
- }
77
- else
78
- {}
79
- end
80
- end
81
- end
82
- end
83
- end
84
- end
85
- end