kensa 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
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