kensa 1.3.0 → 1.4.0

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