kensa 1.4.1 → 1.4.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.
data/.travis.yml CHANGED
@@ -1,8 +1,11 @@
1
+ branches:
2
+ only:
3
+ - master
1
4
  rvm:
2
- - 1.8.7
5
+ - 1.8.7
3
6
  - 1.9.2
4
7
  - 1.9.3
5
8
  notifications:
6
- email:
9
+ email:
7
10
  - csquared@heroku.com
8
11
  - glenn@heroku.com
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
  gemspec
3
3
  gem 'rake'
4
4
  group :development do
data/Gemfile.lock CHANGED
@@ -1,39 +1,55 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kensa (1.4.1)
4
+ kensa (1.4.2)
5
5
  launchy (>= 0.3.2)
6
- mechanize (~> 1.0.0)
6
+ mechanize (~> 2.6.0)
7
7
  rest-client (>= 1.4.0, < 1.7.0)
8
8
  term-ansicolor (~> 1.0)
9
9
 
10
10
  GEM
11
- remote: http://rubygems.org/
11
+ remote: https://rubygems.org/
12
12
  specs:
13
- addressable (2.2.6)
13
+ addressable (2.3.3)
14
14
  archive-tar-minitar (0.5.2)
15
15
  artifice (0.6)
16
16
  rack-test
17
- columnize (0.3.4)
17
+ columnize (0.3.6)
18
18
  contest (0.1.3)
19
- fakefs (0.4.0)
20
- haml (3.1.2)
21
- launchy (2.0.5)
22
- addressable (~> 2.2.6)
23
- linecache (0.43)
19
+ domain_name (0.5.9)
20
+ unf (>= 0.0.5, < 1.0.0)
21
+ fakefs (0.4.2)
22
+ haml (4.0.1)
23
+ tilt
24
+ launchy (2.2.0)
25
+ addressable (~> 2.3)
26
+ linecache (0.46)
27
+ rbx-require-relative (> 0.0.4)
24
28
  linecache19 (0.5.12)
25
29
  ruby_core_source (>= 0.1.4)
26
- mechanize (1.0.0)
27
- nokogiri (>= 1.2.1)
28
- mime-types (1.17.2)
29
- nokogiri (1.5.0)
30
- rack (1.3.2)
31
- rack-test (0.6.1)
30
+ mechanize (2.6.0)
31
+ domain_name (~> 0.5, >= 0.5.1)
32
+ mime-types (~> 1.17, >= 1.17.2)
33
+ net-http-digest_auth (~> 1.1, >= 1.1.1)
34
+ net-http-persistent (~> 2.5, >= 2.5.2)
35
+ nokogiri (~> 1.4)
36
+ ntlm-http (~> 0.1, >= 0.1.1)
37
+ webrobots (>= 0.0.9, < 0.2)
38
+ mime-types (1.21)
39
+ net-http-digest_auth (1.2.1)
40
+ net-http-persistent (2.8)
41
+ nokogiri (1.5.9)
42
+ ntlm-http (0.1.1)
43
+ rack (1.5.2)
44
+ rack-protection (1.5.0)
45
+ rack
46
+ rack-test (0.6.2)
32
47
  rack (>= 1.0)
33
- rake (0.9.2.2)
48
+ rake (10.0.4)
49
+ rbx-require-relative (0.0.9)
34
50
  rest-client (1.6.7)
35
51
  mime-types (>= 1.16)
36
- rr (1.0.3)
52
+ rr (1.0.4)
37
53
  ruby-debug (0.10.4)
38
54
  columnize (>= 0.1)
39
55
  ruby-debug-base (~> 0.10.4.0)
@@ -49,12 +65,17 @@ GEM
49
65
  ruby-debug-base19 (>= 0.11.19)
50
66
  ruby_core_source (0.1.5)
51
67
  archive-tar-minitar (>= 0.5.2)
52
- sinatra (1.2.6)
53
- rack (~> 1.1)
54
- tilt (>= 1.2.2, < 2.0)
55
- term-ansicolor (1.0.7)
56
- tilt (1.3.2)
57
- timecop (0.3.5)
68
+ sinatra (1.4.2)
69
+ rack (~> 1.5, >= 1.5.2)
70
+ rack-protection (~> 1.4)
71
+ tilt (~> 1.3, >= 1.3.4)
72
+ term-ansicolor (1.1.3)
73
+ tilt (1.3.6)
74
+ timecop (0.6.1)
75
+ unf (0.1.1)
76
+ unf_ext
77
+ unf_ext (0.0.6)
78
+ webrobots (0.1.1)
58
79
 
59
80
  PLATFORMS
60
81
  ruby
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
- Kensa
2
- =====
1
+ # Kensa
3
2
 
4
- <img src="https://secure.travis-ci.org/heroku/kensa.png" />
3
+ [![Build Status](https://travis-ci.org/heroku/kensa.png?branch=master)](https://travis-ci.org/heroku/kensa)
5
4
 
6
5
  Kensa is a command-line utility to help Heroku add-on providers integrating
7
6
  their services to Heroku. It offers commands to create and validate manifests,
@@ -21,11 +20,11 @@ Install it like any Ruby Gem:
21
20
  Refer to the Heroku Add-ons Resource Center for more information on usage, and
22
21
  how to build your Heroku add-on:
23
22
 
24
- http://provider.heroku.com/resources/technical/build/provisioning
23
+ <http://provider.heroku.com/resources/technical/build/provisioning>
25
24
 
26
25
 
27
26
  ## Meta #######################################################################
28
27
 
29
- Maintained by Glenn Gillen and csquared.
28
+ Maintained by Glenn Gillen and @mattonrails.
30
29
 
31
- Released under the MIT license. http://github.com/heroku/kensa
30
+ Released under the MIT license. <http://github.com/heroku/kensa>
data/bin/kensa CHANGED
@@ -16,8 +16,8 @@ begin
16
16
  ARGV.clear
17
17
  Client.new(args).run!
18
18
  rescue Client::CommandInvalid => e
19
- abort File.read(__FILE__).split('__END__').last
20
19
  puts e.message unless e.message.empty?
20
+ abort File.read(__FILE__).split('__END__').last
21
21
  end
22
22
 
23
23
  __END__
data/kensa.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Heroku::Kensa::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
9
 
10
- s.authors = ["Blake Mizerany", "Pedro Belo", "Adam Wiggins", 'Glenn Gillen', 'Chris Continanza']
10
+ s.authors = ["Blake Mizerany", "Pedro Belo", "Adam Wiggins", 'Glenn Gillen', 'Chris Continanza', 'Matthew Conway']
11
11
  s.default_executable = %q{kensa}
12
12
  s.description = %q{Kensa is a command-line tool to help add-on providers integrating their services with Heroku. It manages manifest files, and provides a TDD-like approach for programmers to test and develop their APIs.}
13
13
  s.email = %q{pedro@heroku.com}
@@ -34,6 +34,6 @@ Gem::Specification.new do |s|
34
34
  s.add_runtime_dependency(%q<rest-client>, ["< 1.7.0", ">= 1.4.0"])
35
35
  s.add_runtime_dependency(%q<term-ansicolor>, ["~> 1.0"])
36
36
  s.add_runtime_dependency(%q<launchy>, [">= 0.3.2"])
37
- s.add_runtime_dependency(%q<mechanize>, ["~> 1.0.0"])
37
+ s.add_runtime_dependency(%q<mechanize>, ["~> 2.6.0"])
38
38
  end
39
39
 
@@ -92,6 +92,16 @@ module Heroku
92
92
  check "is a hash" do
93
93
  data["api"].is_a?(Hash)
94
94
  end
95
+ check "has a list of regions" do
96
+ data["api"].has_key?("regions")
97
+ data["api"]["regions"].is_a?(Array)
98
+ end
99
+ check "contains at least the US region" do
100
+ data["api"]["regions"].include? "us"
101
+ end
102
+ check "contains only valid region names" do
103
+ data["api"]["regions"].all? { |reg| Manifest::REGIONS.include? reg }
104
+ end
95
105
  check "contains password" do
96
106
  data["api"].has_key?("password") && data["api"]["password"] != ""
97
107
  end
@@ -454,7 +464,10 @@ module Heroku
454
464
  end
455
465
 
456
466
  check "displays the heroku layout" do
457
- error("could not find Heroku layout") if page_logged_in.search('div#heroku-header').empty?
467
+ if page_logged_in.search('div#heroku-header').empty? &&
468
+ page_logged_in.search('script[src*=boomerang]').empty?
469
+ error("could not find Heroku layout")
470
+ end
458
471
  true
459
472
  end
460
473
  end
@@ -64,6 +64,8 @@ module Heroku
64
64
  run_check ManifestCheck, SsoCheck, :id => id
65
65
  when "all"
66
66
  run_check AllCheck
67
+ when nil
68
+ run_check AllCheck
67
69
  else
68
70
  abort "! Unknown test '#{check}'; see usage"
69
71
  end
@@ -91,8 +93,8 @@ module Heroku
91
93
  resource['provider/addons'].post(resolve_manifest, headers)
92
94
  puts "-----> Manifest for \"#{data['id']}\" was pushed successfully"
93
95
  puts " Continue at #{(heroku_host)}/provider/addons/#{data['id']}"
94
- rescue RestClient::UnprocessableEntity => e
95
- abort("FAILED: #{e.http_body}")
96
+ rescue RestClient::UnprocessableEntity, RestClient::BadRequest => e
97
+ abort("FAILED: #{e.response}")
96
98
  rescue RestClient::Unauthorized
97
99
  abort("Authentication failure")
98
100
  rescue RestClient::Forbidden
@@ -236,11 +238,11 @@ module Heroku
236
238
  end
237
239
 
238
240
  def error(msg)
239
- $stdout.print "\n", magenta(" ! #{msg}")
241
+ $stdout.print "\n", red(" #{msg}")
240
242
  end
241
243
 
242
244
  def result(status)
243
- msg = status ? bold("[PASS]") : red(bold("[FAIL]"))
245
+ msg = status ? green("[PASS]") : red(bold("[FAIL]"))
244
246
  $stdout.print " #{msg}"
245
247
  end
246
248
 
@@ -1,6 +1,9 @@
1
+ require 'securerandom'
2
+
1
3
  module Heroku
2
4
  module Kensa
3
5
  class Manifest
6
+ REGIONS = %w(us eu)
4
7
 
5
8
  def initialize(options = {})
6
9
  @method = options.fetch(:method, 'post').to_sym
@@ -20,6 +23,7 @@ module Heroku
20
23
  "id": "myaddon",
21
24
  "api": {
22
25
  "config_vars": [ "MYADDON_URL" ],
26
+ "regions": [ "us" ],
23
27
  "password": "#{@password}",#{ sso_key }
24
28
  "production": "https://yourapp.com/",
25
29
  "test": "http://localhost:#{@port}/"
@@ -34,6 +38,7 @@ JSON
34
38
  "id": "myaddon",
35
39
  "api": {
36
40
  "config_vars": [ "MYADDON_URL" ],
41
+ "regions": [ "us" ],
37
42
  "password": "#{@password}",#{ sso_key }
38
43
  "production": {
39
44
  "base_url": "https://yourapp.com/heroku/resources",
@@ -69,15 +74,14 @@ ENV
69
74
  private
70
75
 
71
76
  def sso_key
72
- @sso_salt = generate_password(16)
77
+ @sso_salt = generate_password(16)
73
78
  unless @options[:sso] === false
74
79
  %{\n "sso_salt": "#{@sso_salt}",}
75
80
  end
76
81
  end
77
82
 
78
- PasswordChars = chars = ['a'..'z', 'A'..'Z', '0'..'9'].map { |r| r.to_a }.flatten
79
- def generate_password(size=16)
80
- Array.new(size) { PasswordChars[rand(PasswordChars.size)] }.join
83
+ def generate_password(size=8)
84
+ SecureRandom.hex(size)
81
85
  end
82
86
 
83
87
  end
@@ -1,5 +1,5 @@
1
1
  module Heroku
2
2
  module Kensa
3
- VERSION = '1.4.1'
3
+ VERSION = '1.4.2'
4
4
  end
5
5
  end
@@ -12,8 +12,8 @@ class ManifestCheckTest < Test::Unit::TestCase
12
12
  end
13
13
  end
14
14
 
15
- %w{get post}.each do |method|
16
- context "with sso #{method}" do
15
+ %w{get post}.each do |method|
16
+ context "with sso #{method}" do
17
17
  setup { @data = Manifest.new(:method => method).skeleton }
18
18
 
19
19
  test "is valid if no errors" do
@@ -35,6 +35,21 @@ class ManifestCheckTest < Test::Unit::TestCase
35
35
  assert_invalid
36
36
  end
37
37
 
38
+ test "api has a list of regions" do
39
+ @data["api"].delete("regions")
40
+ assert_invalid
41
+ end
42
+
43
+ test "api has a list of regions including US" do
44
+ @data["api"]["regions"] = ["eu"]
45
+ assert_invalid
46
+ end
47
+
48
+ test "api only allows valid region names" do
49
+ @data["api"]["regions"] = ["us", "ap"]
50
+ assert_invalid
51
+ end
52
+
38
53
  test "api has a password" do
39
54
  @data["api"].delete("password")
40
55
  assert_invalid
@@ -26,6 +26,10 @@ class ManifestTest < Test::Unit::TestCase
26
26
  assert_equal @manifest.skeleton['api']['test'], 'http://localhost:4567/'
27
27
  assert_equal @manifest.skeleton['api']['production'], 'https://yourapp.com/'
28
28
  end
29
+
30
+ test 'specifies the US region by default' do
31
+ assert_equal @manifest.skeleton['api']['regions'], ['us']
32
+ end
29
33
  end
30
34
 
31
35
  context "POST manifest" do
@@ -40,6 +44,10 @@ class ManifestTest < Test::Unit::TestCase
40
44
  assert_equal @manifest.skeleton['api']['production']['base_url'], 'https://yourapp.com/heroku/resources'
41
45
  assert_equal @manifest.skeleton['api']['production']['sso_url'], 'https://yourapp.com/sso/login'
42
46
  end
47
+
48
+ test 'specifies the US region by default' do
49
+ assert_equal @manifest.skeleton['api']['regions'], ['us']
50
+ end
43
51
  end
44
52
 
45
53
  context 'manifest without sso' do
@@ -5,14 +5,14 @@ class SsoCheckTest < Test::Unit::TestCase
5
5
  include ProviderMock
6
6
 
7
7
  def check ; SsoCheck ; end
8
- %w{get post}.each do |method|
8
+ %w{get post}.each do |method|
9
9
  context "via #{method}" do
10
10
  setup do
11
11
  @data = Manifest.new(:sso => true, :method => method).
12
12
  skeleton.merge :id => 123
13
13
  @data['api']['sso_salt'] = 'SSO_SALT'
14
14
  end
15
-
15
+
16
16
  test "working sso request" do
17
17
  use_provider_endpoint('working', 'sso')
18
18
  assert_valid
metadata CHANGED
@@ -1,222 +1,228 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: kensa
3
- version: !ruby/object:Gem::Version
4
- hash: 5
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.4.2
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 4
9
- - 1
10
- version: 1.4.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Blake Mizerany
14
9
  - Pedro Belo
15
10
  - Adam Wiggins
16
11
  - Glenn Gillen
17
12
  - Chris Continanza
13
+ - Matthew Conway
18
14
  autorequire:
19
15
  bindir: bin
20
16
  cert_chain: []
21
-
22
- date: 2012-03-08 00:00:00 -08:00
23
- default_executable: kensa
24
- dependencies:
25
- - !ruby/object:Gem::Dependency
26
- requirement: &id001 !ruby/object:Gem::Requirement
27
- none: false
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- hash: 3
32
- segments:
33
- - 0
34
- version: "0"
35
- version_requirements: *id001
17
+ date: 2013-05-08 00:00:00.000000000 Z
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
36
20
  name: contest
37
- prerelease: false
21
+ requirement: !ruby/object:Gem::Requirement
22
+ none: false
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
38
27
  type: :development
39
- - !ruby/object:Gem::Dependency
40
- requirement: &id002 !ruby/object:Gem::Requirement
28
+ prerelease: false
29
+ version_requirements: !ruby/object:Gem::Requirement
41
30
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 25
46
- segments:
47
- - 0
48
- - 3
49
- - 5
50
- version: 0.3.5
51
- version_requirements: *id002
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ - !ruby/object:Gem::Dependency
52
36
  name: timecop
53
- prerelease: false
37
+ requirement: !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ! '>='
41
+ - !ruby/object:Gem::Version
42
+ version: 0.3.5
54
43
  type: :development
55
- - !ruby/object:Gem::Dependency
56
- requirement: &id003 !ruby/object:Gem::Requirement
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
57
46
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 25
62
- segments:
63
- - 0
64
- - 9
65
- version: "0.9"
66
- version_requirements: *id003
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: 0.3.5
51
+ - !ruby/object:Gem::Dependency
67
52
  name: sinatra
68
- prerelease: false
53
+ requirement: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0.9'
69
59
  type: :development
70
- - !ruby/object:Gem::Dependency
71
- requirement: &id004 !ruby/object:Gem::Requirement
60
+ prerelease: false
61
+ version_requirements: !ruby/object:Gem::Requirement
72
62
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
80
- version_requirements: *id004
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0.9'
67
+ - !ruby/object:Gem::Dependency
81
68
  name: contest
82
- prerelease: false
69
+ requirement: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
83
75
  type: :development
84
- - !ruby/object:Gem::Dependency
85
- requirement: &id005 !ruby/object:Gem::Requirement
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
86
78
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
- version: "0"
94
- version_requirements: *id005
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
95
84
  name: haml
96
- prerelease: false
85
+ requirement: !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
97
91
  type: :development
98
- - !ruby/object:Gem::Dependency
99
- requirement: &id006 !ruby/object:Gem::Requirement
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
100
94
  none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- hash: 3
105
- segments:
106
- - 0
107
- version: "0"
108
- version_requirements: *id006
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
109
100
  name: rr
110
- prerelease: false
101
+ requirement: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
111
107
  type: :development
112
- - !ruby/object:Gem::Dependency
113
- requirement: &id007 !ruby/object:Gem::Requirement
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
114
110
  none: false
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- hash: 3
119
- segments:
120
- - 0
121
- version: "0"
122
- version_requirements: *id007
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ - !ruby/object:Gem::Dependency
123
116
  name: fakefs
124
- prerelease: false
117
+ requirement: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
125
123
  type: :development
126
- - !ruby/object:Gem::Dependency
127
- requirement: &id008 !ruby/object:Gem::Requirement
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
128
126
  none: false
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- hash: 3
133
- segments:
134
- - 0
135
- version: "0"
136
- version_requirements: *id008
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
137
132
  name: artifice
138
- prerelease: false
133
+ requirement: !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
139
  type: :development
140
- - !ruby/object:Gem::Dependency
141
- requirement: &id009 !ruby/object:Gem::Requirement
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
142
  none: false
143
- requirements:
143
+ requirements:
144
+ - - ! '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ - !ruby/object:Gem::Dependency
148
+ name: rest-client
149
+ requirement: !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
144
152
  - - <
145
- - !ruby/object:Gem::Version
146
- hash: 11
147
- segments:
148
- - 1
149
- - 7
150
- - 0
153
+ - !ruby/object:Gem::Version
151
154
  version: 1.7.0
152
- - - ">="
153
- - !ruby/object:Gem::Version
154
- hash: 7
155
- segments:
156
- - 1
157
- - 4
158
- - 0
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
159
157
  version: 1.4.0
160
- version_requirements: *id009
161
- name: rest-client
162
- prerelease: false
163
158
  type: :runtime
164
- - !ruby/object:Gem::Dependency
165
- requirement: &id010 !ruby/object:Gem::Requirement
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
166
161
  none: false
167
- requirements:
168
- - - ~>
169
- - !ruby/object:Gem::Version
170
- hash: 15
171
- segments:
172
- - 1
173
- - 0
174
- version: "1.0"
175
- version_requirements: *id010
162
+ requirements:
163
+ - - <
164
+ - !ruby/object:Gem::Version
165
+ version: 1.7.0
166
+ - - ! '>='
167
+ - !ruby/object:Gem::Version
168
+ version: 1.4.0
169
+ - !ruby/object:Gem::Dependency
176
170
  name: term-ansicolor
177
- prerelease: false
171
+ requirement: !ruby/object:Gem::Requirement
172
+ none: false
173
+ requirements:
174
+ - - ~>
175
+ - !ruby/object:Gem::Version
176
+ version: '1.0'
178
177
  type: :runtime
179
- - !ruby/object:Gem::Dependency
180
- requirement: &id011 !ruby/object:Gem::Requirement
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
181
180
  none: false
182
- requirements:
183
- - - ">="
184
- - !ruby/object:Gem::Version
185
- hash: 23
186
- segments:
187
- - 0
188
- - 3
189
- - 2
190
- version: 0.3.2
191
- version_requirements: *id011
181
+ requirements:
182
+ - - ~>
183
+ - !ruby/object:Gem::Version
184
+ version: '1.0'
185
+ - !ruby/object:Gem::Dependency
192
186
  name: launchy
193
- prerelease: false
187
+ requirement: !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ! '>='
191
+ - !ruby/object:Gem::Version
192
+ version: 0.3.2
194
193
  type: :runtime
195
- - !ruby/object:Gem::Dependency
196
- requirement: &id012 !ruby/object:Gem::Requirement
194
+ prerelease: false
195
+ version_requirements: !ruby/object:Gem::Requirement
197
196
  none: false
198
- requirements:
199
- - - ~>
200
- - !ruby/object:Gem::Version
201
- hash: 23
202
- segments:
203
- - 1
204
- - 0
205
- - 0
206
- version: 1.0.0
207
- version_requirements: *id012
197
+ requirements:
198
+ - - ! '>='
199
+ - !ruby/object:Gem::Version
200
+ version: 0.3.2
201
+ - !ruby/object:Gem::Dependency
208
202
  name: mechanize
209
- prerelease: false
203
+ requirement: !ruby/object:Gem::Requirement
204
+ none: false
205
+ requirements:
206
+ - - ~>
207
+ - !ruby/object:Gem::Version
208
+ version: 2.6.0
210
209
  type: :runtime
211
- description: Kensa is a command-line tool to help add-on providers integrating their services with Heroku. It manages manifest files, and provides a TDD-like approach for programmers to test and develop their APIs.
210
+ prerelease: false
211
+ version_requirements: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ~>
215
+ - !ruby/object:Gem::Version
216
+ version: 2.6.0
217
+ description: Kensa is a command-line tool to help add-on providers integrating their
218
+ services with Heroku. It manages manifest files, and provides a TDD-like approach
219
+ for programmers to test and develop their APIs.
212
220
  email: pedro@heroku.com
213
- executables:
221
+ executables:
214
222
  - kensa
215
223
  extensions: []
216
-
217
224
  extra_rdoc_files: []
218
-
219
- files:
225
+ files:
220
226
  - .gitignore
221
227
  - .travis.yml
222
228
  - Gemfile
@@ -253,41 +259,31 @@ files:
253
259
  - test/resources/server.rb
254
260
  - test/sso_check_test.rb
255
261
  - test/sso_test.rb
256
- has_rdoc: true
257
262
  homepage: http://provider.heroku.com/resources
258
263
  licenses: []
259
-
260
264
  post_install_message:
261
265
  rdoc_options: []
262
-
263
- require_paths:
266
+ require_paths:
264
267
  - lib
265
- required_ruby_version: !ruby/object:Gem::Requirement
268
+ required_ruby_version: !ruby/object:Gem::Requirement
266
269
  none: false
267
- requirements:
268
- - - ">="
269
- - !ruby/object:Gem::Version
270
- hash: 3
271
- segments:
272
- - 0
273
- version: "0"
274
- required_rubygems_version: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - ! '>='
272
+ - !ruby/object:Gem::Version
273
+ version: '0'
274
+ required_rubygems_version: !ruby/object:Gem::Requirement
275
275
  none: false
276
- requirements:
277
- - - ">="
278
- - !ruby/object:Gem::Version
279
- hash: 3
280
- segments:
281
- - 0
282
- version: "0"
276
+ requirements:
277
+ - - ! '>='
278
+ - !ruby/object:Gem::Version
279
+ version: '0'
283
280
  requirements: []
284
-
285
281
  rubyforge_project: kensa
286
- rubygems_version: 1.6.2
282
+ rubygems_version: 1.8.23
287
283
  signing_key:
288
284
  specification_version: 3
289
285
  summary: Tool to help Heroku add-on providers integrating their services
290
- test_files:
286
+ test_files:
291
287
  - test/all_check_test.rb
292
288
  - test/create_test.rb
293
289
  - test/deprovision_check_test.rb