kensa 1.3.0 → 1.4.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.
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
- puts e.message unless e.message.empty?
20
19
  abort File.read(__FILE__).split('__END__').last
20
+ puts e.message unless e.message.empty?
21
21
  end
22
22
 
23
23
  __END__
@@ -77,7 +77,7 @@ module Heroku
77
77
 
78
78
  def sso
79
79
  id = @args.shift || abort("! no id specified; see usage")
80
- data = OkJson.decode(resolve_manifest).merge(:id => id)
80
+ data = decoded_manifest
81
81
  sso = Sso.new(data.merge(@options)).start
82
82
  puts sso.message
83
83
  Launchy.open sso.sso_url
@@ -86,7 +86,7 @@ module Heroku
86
86
  def push
87
87
  user, password = ask_for_credentials
88
88
  host = heroku_host
89
- data = OkJson.decode(resolve_manifest)
89
+ data = decoded_manifest
90
90
  resource = RestClient::Resource.new(host, user, password)
91
91
  resource['provider/addons'].post(resolve_manifest, headers)
92
92
  puts "-----> Manifest for \"#{data['id']}\" was pushed successfully"
@@ -148,6 +148,12 @@ module Heroku
148
148
  end
149
149
  end
150
150
 
151
+ def decoded_manifest
152
+ OkJson.decode(resolve_manifest)
153
+ rescue OkJson::Error => e
154
+ raise CommandInvalid, "#{filename} includes invalid JSON"
155
+ end
156
+
151
157
  def manifest_exists?
152
158
  File.exists?(filename)
153
159
  end
@@ -157,7 +163,7 @@ module Heroku
157
163
  options = args.pop if args.last.is_a?(Hash)
158
164
 
159
165
  args.each do |klass|
160
- data = OkJson.decode(resolve_manifest)
166
+ data = decoded_manifest
161
167
  check = klass.new(data.merge(@options.merge(options)), screen)
162
168
  result = check.call
163
169
  screen.finish
@@ -3,7 +3,7 @@ module Heroku
3
3
  class Manifest
4
4
 
5
5
  def initialize(options = {})
6
- @method = options.fetch(:method, 'get').to_sym
6
+ @method = options.fetch(:method, 'post').to_sym
7
7
  @filename = options[:filename]
8
8
  @options = options
9
9
  end
@@ -1,5 +1,5 @@
1
1
  module Heroku
2
2
  module Kensa
3
- VERSION = '1.3.0'
3
+ VERSION = '1.4.0'
4
4
  end
5
5
  end
data/test/init_test.rb CHANGED
@@ -16,17 +16,7 @@ class InitTest < Test::Unit::TestCase
16
16
  end
17
17
  end
18
18
 
19
- def test_init_default_so_sso_post
20
- kensa "init"
21
- manifest = read_json(@filename)
22
- %w{test production}.each do |env|
23
- assert manifest['api'][env] =~ /^http/
24
- end
25
- assert !File.exist?('.env')
26
- end
27
-
28
- =begin
29
- def test_init_default_so_sso_post
19
+ def test_init_defaults_to_sso_post
30
20
  kensa "init"
31
21
  manifest = read_json(@filename)
32
22
  %w{test production}.each do |env|
@@ -36,7 +26,6 @@ class InitTest < Test::Unit::TestCase
36
26
  end
37
27
  assert !File.exist?('.env')
38
28
  end
39
- =end
40
29
 
41
30
  def test_init_uses_file_flag
42
31
  @filename = 'foo.json'
@@ -5,6 +5,13 @@ class ManifestCheckTest < Test::Unit::TestCase
5
5
 
6
6
  def check ; ManifestCheck ; end
7
7
 
8
+ test "doesn't barf on OkJson errors" do
9
+ File.open("addon-manifest.json", 'w') { |f| f << "{,a" }
10
+ assert_raises Client::CommandInvalid, "addon-manifest.json includes invalid JSON" do
11
+ kensa "test provision"
12
+ end
13
+ end
14
+
8
15
  %w{get post}.each do |method|
9
16
  context "with sso #{method}" do
10
17
  setup { @data = Manifest.new(:method => method).skeleton }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kensa
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 1.3.0
10
+ version: 1.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Blake Mizerany
@@ -19,10 +19,12 @@ autorequire:
19
19
  bindir: bin
20
20
  cert_chain: []
21
21
 
22
- date: 2011-12-21 00:00:00 -08:00
22
+ date: 2012-01-27 00:00:00 -08:00
23
23
  default_executable: kensa
24
24
  dependencies:
25
25
  - !ruby/object:Gem::Dependency
26
+ name: contest
27
+ prerelease: false
26
28
  requirement: &id001 !ruby/object:Gem::Requirement
27
29
  none: false
28
30
  requirements:
@@ -33,10 +35,10 @@ dependencies:
33
35
  - 0
34
36
  version: "0"
35
37
  type: :development
36
- name: contest
37
- prerelease: false
38
38
  version_requirements: *id001
39
39
  - !ruby/object:Gem::Dependency
40
+ name: timecop
41
+ prerelease: false
40
42
  requirement: &id002 !ruby/object:Gem::Requirement
41
43
  none: false
42
44
  requirements:
@@ -49,10 +51,10 @@ dependencies:
49
51
  - 5
50
52
  version: 0.3.5
51
53
  type: :development
52
- name: timecop
53
- prerelease: false
54
54
  version_requirements: *id002
55
55
  - !ruby/object:Gem::Dependency
56
+ name: sinatra
57
+ prerelease: false
56
58
  requirement: &id003 !ruby/object:Gem::Requirement
57
59
  none: false
58
60
  requirements:
@@ -64,10 +66,10 @@ dependencies:
64
66
  - 9
65
67
  version: "0.9"
66
68
  type: :development
67
- name: sinatra
68
- prerelease: false
69
69
  version_requirements: *id003
70
70
  - !ruby/object:Gem::Dependency
71
+ name: contest
72
+ prerelease: false
71
73
  requirement: &id004 !ruby/object:Gem::Requirement
72
74
  none: false
73
75
  requirements:
@@ -78,10 +80,10 @@ dependencies:
78
80
  - 0
79
81
  version: "0"
80
82
  type: :development
81
- name: contest
82
- prerelease: false
83
83
  version_requirements: *id004
84
84
  - !ruby/object:Gem::Dependency
85
+ name: haml
86
+ prerelease: false
85
87
  requirement: &id005 !ruby/object:Gem::Requirement
86
88
  none: false
87
89
  requirements:
@@ -92,10 +94,10 @@ dependencies:
92
94
  - 0
93
95
  version: "0"
94
96
  type: :development
95
- name: haml
96
- prerelease: false
97
97
  version_requirements: *id005
98
98
  - !ruby/object:Gem::Dependency
99
+ name: rr
100
+ prerelease: false
99
101
  requirement: &id006 !ruby/object:Gem::Requirement
100
102
  none: false
101
103
  requirements:
@@ -106,10 +108,10 @@ dependencies:
106
108
  - 0
107
109
  version: "0"
108
110
  type: :development
109
- name: rr
110
- prerelease: false
111
111
  version_requirements: *id006
112
112
  - !ruby/object:Gem::Dependency
113
+ name: fakefs
114
+ prerelease: false
113
115
  requirement: &id007 !ruby/object:Gem::Requirement
114
116
  none: false
115
117
  requirements:
@@ -120,10 +122,10 @@ dependencies:
120
122
  - 0
121
123
  version: "0"
122
124
  type: :development
123
- name: fakefs
124
- prerelease: false
125
125
  version_requirements: *id007
126
126
  - !ruby/object:Gem::Dependency
127
+ name: artifice
128
+ prerelease: false
127
129
  requirement: &id008 !ruby/object:Gem::Requirement
128
130
  none: false
129
131
  requirements:
@@ -134,10 +136,10 @@ dependencies:
134
136
  - 0
135
137
  version: "0"
136
138
  type: :development
137
- name: artifice
138
- prerelease: false
139
139
  version_requirements: *id008
140
140
  - !ruby/object:Gem::Dependency
141
+ name: rest-client
142
+ prerelease: false
141
143
  requirement: &id009 !ruby/object:Gem::Requirement
142
144
  none: false
143
145
  requirements:
@@ -158,10 +160,10 @@ dependencies:
158
160
  - 0
159
161
  version: 1.4.0
160
162
  type: :runtime
161
- name: rest-client
162
- prerelease: false
163
163
  version_requirements: *id009
164
164
  - !ruby/object:Gem::Dependency
165
+ name: term-ansicolor
166
+ prerelease: false
165
167
  requirement: &id010 !ruby/object:Gem::Requirement
166
168
  none: false
167
169
  requirements:
@@ -173,10 +175,10 @@ dependencies:
173
175
  - 0
174
176
  version: "1.0"
175
177
  type: :runtime
176
- name: term-ansicolor
177
- prerelease: false
178
178
  version_requirements: *id010
179
179
  - !ruby/object:Gem::Dependency
180
+ name: launchy
181
+ prerelease: false
180
182
  requirement: &id011 !ruby/object:Gem::Requirement
181
183
  none: false
182
184
  requirements:
@@ -189,10 +191,10 @@ dependencies:
189
191
  - 2
190
192
  version: 0.3.2
191
193
  type: :runtime
192
- name: launchy
193
- prerelease: false
194
194
  version_requirements: *id011
195
195
  - !ruby/object:Gem::Dependency
196
+ name: mechanize
197
+ prerelease: false
196
198
  requirement: &id012 !ruby/object:Gem::Requirement
197
199
  none: false
198
200
  requirements:
@@ -205,8 +207,6 @@ dependencies:
205
207
  - 0
206
208
  version: 1.0.0
207
209
  type: :runtime
208
- name: mechanize
209
- prerelease: false
210
210
  version_requirements: *id012
211
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.
212
212
  email: pedro@heroku.com