kensa 1.2.0rc3 → 1.2.0rc4
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/Gemfile.lock +2 -1
- data/bin/kensa +1 -10
- data/kensa.gemspec +13 -12
- data/lib/heroku/kensa/client.rb +2 -59
- data/lib/heroku/kensa/version.rb +1 -1
- data/test/lib/dependencies.rb +5 -1
- data/test/lib/formatter.rb +2 -3
- data/test/lib/{test_case.rb → http.rb} +5 -1
- data/test/lib/response.rb +3 -0
- data/test/resources/provider_server.rb +0 -1
- metadata +39 -31
- data/test.rb +0 -1
- data/test/create_test.rb +0 -12
data/Gemfile.lock
CHANGED
data/bin/kensa
CHANGED
@@ -24,7 +24,6 @@ ARGV.options do |o|
|
|
24
24
|
o.on("-h", "--help") { command = "help" }
|
25
25
|
o.on("-p plan", "--plan") { |plan| options[:plan] = plan }
|
26
26
|
o.on("-v", "--version") { options[:command] = "version" }
|
27
|
-
o.on("-t template", "--template") { |t| options[:template] = t }
|
28
27
|
o.parse!
|
29
28
|
end
|
30
29
|
|
@@ -34,8 +33,6 @@ begin
|
|
34
33
|
args = ARGV.dup
|
35
34
|
ARGV.clear
|
36
35
|
Client.new(args, options).run!
|
37
|
-
rescue Client::CommandFailed => e
|
38
|
-
puts "We're sorry, but #{e.message} "
|
39
36
|
rescue Client::CommandInvalid
|
40
37
|
abort File.read(__FILE__).split('__END__').last
|
41
38
|
end
|
@@ -66,17 +63,10 @@ OPTIONS
|
|
66
63
|
--post
|
67
64
|
Use HTTP POST for single sign-on instead of GET
|
68
65
|
|
69
|
-
-t, --template name
|
70
|
-
Desired template to clone for create command from:
|
71
|
-
git://github.com/heroku/kensa-template-<name>
|
72
|
-
try sinatra, clojure, or node
|
73
|
-
|
74
66
|
COMMANDS
|
75
67
|
|
76
68
|
init Creates a skeleton manifest
|
77
69
|
|
78
|
-
create <name> Creates a skeleton application from --template
|
79
|
-
|
80
70
|
test <type> Simulate call from Heroku (provision or deprovision)
|
81
71
|
|
82
72
|
run <command> Provisions a resource and runs command in returned ENV
|
@@ -103,3 +93,4 @@ TEST TYPES
|
|
103
93
|
|
104
94
|
manifest
|
105
95
|
Confirm that the manifest is valid. Automatically runs before all tests.
|
96
|
+
|
data/kensa.gemspec
CHANGED
@@ -17,16 +17,17 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
18
|
s.require_paths = ["lib"]
|
19
19
|
|
20
|
-
s.add_development_dependency(
|
21
|
-
s.add_development_dependency(
|
22
|
-
s.add_development_dependency(
|
23
|
-
s.add_development_dependency(
|
24
|
-
s.add_development_dependency(
|
25
|
-
s.add_development_dependency(
|
26
|
-
s.add_runtime_dependency(
|
27
|
-
s.add_runtime_dependency(
|
28
|
-
s.add_runtime_dependency(
|
29
|
-
s.add_runtime_dependency(
|
30
|
-
s.add_runtime_dependency(
|
31
|
-
s.add_runtime_dependency(
|
20
|
+
s.add_development_dependency('json', [">= 0"])
|
21
|
+
s.add_development_dependency('sinatra', ["~> 1.2.6"])
|
22
|
+
s.add_development_dependency('timecop', ["~> 0.3.5"])
|
23
|
+
s.add_development_dependency('rr', ["~> 1.0.4"])
|
24
|
+
s.add_development_dependency('artifice', ["~> 0.6"])
|
25
|
+
s.add_development_dependency('haml', ["~> 3.1.3"])
|
26
|
+
s.add_runtime_dependency('test-unit', ["~> 1.2.3"])
|
27
|
+
s.add_runtime_dependency('rest-client', ["~> 1.6.7"])
|
28
|
+
s.add_runtime_dependency('yajl-ruby', ["~> 0.8.3"])
|
29
|
+
s.add_runtime_dependency('term-ansicolor', ["~> 1.0.6"])
|
30
|
+
s.add_runtime_dependency('launchy', ["~> 2.0.5"])
|
31
|
+
s.add_runtime_dependency('mechanize', ["~> 1.0.0"])
|
32
|
+
s.add_runtime_dependency('artifice', ["~> 0.6.0"])
|
32
33
|
end
|
data/lib/heroku/kensa/client.rb
CHANGED
@@ -3,46 +3,9 @@ require 'term/ansicolor'
|
|
3
3
|
require 'launchy'
|
4
4
|
|
5
5
|
module Heroku
|
6
|
-
class Git
|
7
|
-
class << self
|
8
|
-
def verify_create(app_name, template)
|
9
|
-
raise CommandInvalid.new("template #{clone_url(template)} does not exist") unless template_exists?(template)
|
10
|
-
raise CommandInvalid.new("Need git to clone repository") unless git_installed?
|
11
|
-
end
|
12
|
-
|
13
|
-
def template_exists?(template)
|
14
|
-
true
|
15
|
-
end
|
16
|
-
|
17
|
-
def git_installed?
|
18
|
-
`git` rescue false
|
19
|
-
end
|
20
|
-
|
21
|
-
def clone(app_name, template)
|
22
|
-
verify_create(app_name, template)
|
23
|
-
cmd = "git clone #{clone_url(template)} #{app_name}"
|
24
|
-
puts cmd
|
25
|
-
`#{cmd}`
|
26
|
-
raise Exception.new("couldn't clone the repository from #{clone_url(template)}") unless File.directory?("#{app_name}")
|
27
|
-
puts "Created #{app_name} from #{template} template"
|
28
|
-
end
|
29
|
-
|
30
|
-
def clone_url(name)
|
31
|
-
prefix = ENV['REPO_PREFIX'] || "heroku"
|
32
|
-
if name.include? "://" #its a full url
|
33
|
-
return name
|
34
|
-
elsif name.include? "/" #its a non-heroku repo
|
35
|
-
name = "#{prefix}/#{name}"
|
36
|
-
else #its one of ours
|
37
|
-
name = "#{prefix}/kensa-create-#{name}"
|
38
|
-
end
|
39
|
-
|
40
|
-
"git://github.com/#{name}"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
6
|
module Kensa
|
7
|
+
class UserError < RuntimeError; end
|
8
|
+
|
46
9
|
class Client
|
47
10
|
def initialize(args, options)
|
48
11
|
@args = args
|
@@ -53,10 +16,7 @@ module Heroku
|
|
53
16
|
@options[:filename]
|
54
17
|
end
|
55
18
|
|
56
|
-
#you fucked up
|
57
19
|
class CommandInvalid < Exception; end
|
58
|
-
#we fucked up
|
59
|
-
class CommandFailed < Exception; end
|
60
20
|
|
61
21
|
def run!
|
62
22
|
command = @args.shift || @options[:command]
|
@@ -69,23 +29,6 @@ module Heroku
|
|
69
29
|
Screen.new.message "Initialized new addon manifest in #{filename}\n"
|
70
30
|
end
|
71
31
|
|
72
|
-
def create
|
73
|
-
app_name = @args.shift
|
74
|
-
template = @options[:template]
|
75
|
-
raise CommandInvalid.new("Need git to supply a template") unless template
|
76
|
-
raise CommandInvalid.new("Need git to supply an application name") unless app_name
|
77
|
-
|
78
|
-
begin
|
79
|
-
Git.clone(app_name, template)
|
80
|
-
rescue Exception => e
|
81
|
-
raise CommandFailed.new("error cloning #{Git.clone_url(template)} into #{app_name}")
|
82
|
-
end
|
83
|
-
|
84
|
-
Dir.chdir("./#{app_name}")
|
85
|
-
`./after_clone #{app_name}` if File.exist?('./after_clone')
|
86
|
-
end
|
87
|
-
|
88
|
-
|
89
32
|
def test
|
90
33
|
case check = @args.shift
|
91
34
|
when "manifest"
|
data/lib/heroku/kensa/version.rb
CHANGED
data/test/lib/dependencies.rb
CHANGED
@@ -3,6 +3,10 @@ require 'artifice'
|
|
3
3
|
require 'rest-client'
|
4
4
|
require 'yajl'
|
5
5
|
require 'lib/heroku/kensa/manifest'
|
6
|
-
%w{response
|
6
|
+
%w{response http formatter}.each do |lib|
|
7
7
|
require "test/lib/#{lib}"
|
8
8
|
end
|
9
|
+
|
10
|
+
class Test::Unit::TestCase
|
11
|
+
include Heroku::Kensa::HTTPTest
|
12
|
+
end
|
data/test/lib/formatter.rb
CHANGED
@@ -13,10 +13,9 @@ module Test
|
|
13
13
|
|
14
14
|
private
|
15
15
|
def add_error(exception)
|
16
|
-
if exception.
|
16
|
+
if exception.is_a? Heroku::Kensa::UserError
|
17
17
|
@test_passed = false
|
18
|
-
|
19
|
-
@_result.add_failure(Failure.new(name, filter_backtrace(caller()), message))
|
18
|
+
@_result.add_failure(Failure.new(name, filter_backtrace(caller()), exception.message))
|
20
19
|
else
|
21
20
|
add_error_with_connection_exception(exception)
|
22
21
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
module Heroku::Kensa::HTTPTest
|
2
2
|
def make_token(id, salt, timestamp)
|
3
3
|
Digest::SHA1.hexdigest([id, salt, timestamp].join(':'))
|
4
4
|
end
|
@@ -19,10 +19,14 @@ class Test::Unit::TestCase
|
|
19
19
|
opts = meth == :get ? { :params => params } : params
|
20
20
|
response = RestClient.send(meth, "#{uri.to_s}", opts)
|
21
21
|
Response.new(response.code, response.body, response.cookies)
|
22
|
+
rescue Errno::ECONNREFUSED
|
23
|
+
raise UserError.new("Unable to connect to your API.")
|
22
24
|
rescue RestClient::Forbidden
|
23
25
|
Response.new(403)
|
24
26
|
rescue RestClient::Unauthorized
|
25
27
|
Response.new(401)
|
28
|
+
rescue RestClient::InternalServerError
|
29
|
+
raise UserError.new("HTTP 500 Internal Server Error")
|
26
30
|
end
|
27
31
|
|
28
32
|
def get(path, params = {})
|
data/test/lib/response.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kensa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.0rc4
|
5
5
|
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,11 +13,11 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2011-10-
|
16
|
+
date: 2011-10-25 00:00:00.000000000Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: json
|
20
|
-
requirement: &
|
20
|
+
requirement: &70143233487380 !ruby/object:Gem::Requirement
|
21
21
|
none: false
|
22
22
|
requirements:
|
23
23
|
- - ! '>='
|
@@ -25,10 +25,10 @@ dependencies:
|
|
25
25
|
version: '0'
|
26
26
|
type: :development
|
27
27
|
prerelease: false
|
28
|
-
version_requirements: *
|
28
|
+
version_requirements: *70143233487380
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: sinatra
|
31
|
-
requirement: &
|
31
|
+
requirement: &70143233486780 !ruby/object:Gem::Requirement
|
32
32
|
none: false
|
33
33
|
requirements:
|
34
34
|
- - ~>
|
@@ -36,10 +36,10 @@ dependencies:
|
|
36
36
|
version: 1.2.6
|
37
37
|
type: :development
|
38
38
|
prerelease: false
|
39
|
-
version_requirements: *
|
39
|
+
version_requirements: *70143233486780
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: timecop
|
42
|
-
requirement: &
|
42
|
+
requirement: &70143233486160 !ruby/object:Gem::Requirement
|
43
43
|
none: false
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
@@ -47,10 +47,10 @@ dependencies:
|
|
47
47
|
version: 0.3.5
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
|
-
version_requirements: *
|
50
|
+
version_requirements: *70143233486160
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
52
|
name: rr
|
53
|
-
requirement: &
|
53
|
+
requirement: &70143233485520 !ruby/object:Gem::Requirement
|
54
54
|
none: false
|
55
55
|
requirements:
|
56
56
|
- - ~>
|
@@ -58,10 +58,10 @@ dependencies:
|
|
58
58
|
version: 1.0.4
|
59
59
|
type: :development
|
60
60
|
prerelease: false
|
61
|
-
version_requirements: *
|
61
|
+
version_requirements: *70143233485520
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: artifice
|
64
|
-
requirement: &
|
64
|
+
requirement: &70143233484660 !ruby/object:Gem::Requirement
|
65
65
|
none: false
|
66
66
|
requirements:
|
67
67
|
- - ~>
|
@@ -69,10 +69,10 @@ dependencies:
|
|
69
69
|
version: '0.6'
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
|
-
version_requirements: *
|
72
|
+
version_requirements: *70143233484660
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: haml
|
75
|
-
requirement: &
|
75
|
+
requirement: &70143233484140 !ruby/object:Gem::Requirement
|
76
76
|
none: false
|
77
77
|
requirements:
|
78
78
|
- - ~>
|
@@ -80,10 +80,10 @@ dependencies:
|
|
80
80
|
version: 3.1.3
|
81
81
|
type: :development
|
82
82
|
prerelease: false
|
83
|
-
version_requirements: *
|
83
|
+
version_requirements: *70143233484140
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: test-unit
|
86
|
-
requirement: &
|
86
|
+
requirement: &70143233483660 !ruby/object:Gem::Requirement
|
87
87
|
none: false
|
88
88
|
requirements:
|
89
89
|
- - ~>
|
@@ -91,10 +91,10 @@ dependencies:
|
|
91
91
|
version: 1.2.3
|
92
92
|
type: :runtime
|
93
93
|
prerelease: false
|
94
|
-
version_requirements: *
|
94
|
+
version_requirements: *70143233483660
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: rest-client
|
97
|
-
requirement: &
|
97
|
+
requirement: &70143233482980 !ruby/object:Gem::Requirement
|
98
98
|
none: false
|
99
99
|
requirements:
|
100
100
|
- - ~>
|
@@ -102,10 +102,10 @@ dependencies:
|
|
102
102
|
version: 1.6.7
|
103
103
|
type: :runtime
|
104
104
|
prerelease: false
|
105
|
-
version_requirements: *
|
105
|
+
version_requirements: *70143233482980
|
106
106
|
- !ruby/object:Gem::Dependency
|
107
107
|
name: yajl-ruby
|
108
|
-
requirement: &
|
108
|
+
requirement: &70143233482240 !ruby/object:Gem::Requirement
|
109
109
|
none: false
|
110
110
|
requirements:
|
111
111
|
- - ~>
|
@@ -113,10 +113,10 @@ dependencies:
|
|
113
113
|
version: 0.8.3
|
114
114
|
type: :runtime
|
115
115
|
prerelease: false
|
116
|
-
version_requirements: *
|
116
|
+
version_requirements: *70143233482240
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
118
|
name: term-ansicolor
|
119
|
-
requirement: &
|
119
|
+
requirement: &70143233481460 !ruby/object:Gem::Requirement
|
120
120
|
none: false
|
121
121
|
requirements:
|
122
122
|
- - ~>
|
@@ -124,10 +124,10 @@ dependencies:
|
|
124
124
|
version: 1.0.6
|
125
125
|
type: :runtime
|
126
126
|
prerelease: false
|
127
|
-
version_requirements: *
|
127
|
+
version_requirements: *70143233481460
|
128
128
|
- !ruby/object:Gem::Dependency
|
129
129
|
name: launchy
|
130
|
-
requirement: &
|
130
|
+
requirement: &70143233476760 !ruby/object:Gem::Requirement
|
131
131
|
none: false
|
132
132
|
requirements:
|
133
133
|
- - ~>
|
@@ -135,10 +135,10 @@ dependencies:
|
|
135
135
|
version: 2.0.5
|
136
136
|
type: :runtime
|
137
137
|
prerelease: false
|
138
|
-
version_requirements: *
|
138
|
+
version_requirements: *70143233476760
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: mechanize
|
141
|
-
requirement: &
|
141
|
+
requirement: &70143233476160 !ruby/object:Gem::Requirement
|
142
142
|
none: false
|
143
143
|
requirements:
|
144
144
|
- - ~>
|
@@ -146,7 +146,18 @@ dependencies:
|
|
146
146
|
version: 1.0.0
|
147
147
|
type: :runtime
|
148
148
|
prerelease: false
|
149
|
-
version_requirements: *
|
149
|
+
version_requirements: *70143233476160
|
150
|
+
- !ruby/object:Gem::Dependency
|
151
|
+
name: artifice
|
152
|
+
requirement: &70143233475540 !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ~>
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 0.6.0
|
158
|
+
type: :runtime
|
159
|
+
prerelease: false
|
160
|
+
version_requirements: *70143233475540
|
150
161
|
description: Kensa is a command-line tool to help add-on providers integrating their
|
151
162
|
services with Heroku. It manages manifest files, and provides a TDD-like approach
|
152
163
|
for programmers to test and develop their APIs.
|
@@ -171,14 +182,12 @@ files:
|
|
171
182
|
- lib/heroku/kensa/sso.rb
|
172
183
|
- lib/heroku/kensa/version.rb
|
173
184
|
- set-env.sh
|
174
|
-
- test.rb
|
175
|
-
- test/create_test.rb
|
176
185
|
- test/deprovision_test.rb
|
177
186
|
- test/helper.rb
|
178
187
|
- test/lib/dependencies.rb
|
179
188
|
- test/lib/formatter.rb
|
189
|
+
- test/lib/http.rb
|
180
190
|
- test/lib/response.rb
|
181
|
-
- test/lib/test_case.rb
|
182
191
|
- test/manifest_generation_test.rb
|
183
192
|
- test/manifest_test.rb
|
184
193
|
- test/plan_change_test.rb
|
@@ -212,13 +221,12 @@ signing_key:
|
|
212
221
|
specification_version: 3
|
213
222
|
summary: Tool to help Heroku add-on providers integrating their services
|
214
223
|
test_files:
|
215
|
-
- test/create_test.rb
|
216
224
|
- test/deprovision_test.rb
|
217
225
|
- test/helper.rb
|
218
226
|
- test/lib/dependencies.rb
|
219
227
|
- test/lib/formatter.rb
|
228
|
+
- test/lib/http.rb
|
220
229
|
- test/lib/response.rb
|
221
|
-
- test/lib/test_case.rb
|
222
230
|
- test/manifest_generation_test.rb
|
223
231
|
- test/manifest_test.rb
|
224
232
|
- test/plan_change_test.rb
|
data/test.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
puts ARGV
|
data/test/create_test.rb
DELETED