kensa 1.2.0rc4 → 1.2.0rc5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kensa (1.2.0rc4)
4
+ kensa (1.2.0rc5)
5
5
  artifice (~> 0.6.0)
6
6
  launchy (~> 2.0.5)
7
7
  mechanize (~> 1.0.0)
data/bin/kensa CHANGED
@@ -24,6 +24,7 @@ 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 }
27
28
  o.parse!
28
29
  end
29
30
 
@@ -33,6 +34,8 @@ begin
33
34
  args = ARGV.dup
34
35
  ARGV.clear
35
36
  Client.new(args, options).run!
37
+ rescue Client::CommandFailed => e
38
+ puts "We're sorry, but #{e.message} "
36
39
  rescue Client::CommandInvalid
37
40
  abort File.read(__FILE__).split('__END__').last
38
41
  end
@@ -63,10 +66,17 @@ OPTIONS
63
66
  --post
64
67
  Use HTTP POST for single sign-on instead of GET
65
68
 
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
+
66
74
  COMMANDS
67
75
 
68
76
  init Creates a skeleton manifest
69
77
 
78
+ create <name> Creates a skeleton application from --template
79
+
70
80
  test <type> Simulate call from Heroku (provision or deprovision)
71
81
 
72
82
  run <command> Provisions a resource and runs command in returned ENV
@@ -93,4 +103,3 @@ TEST TYPES
93
103
 
94
104
  manifest
95
105
  Confirm that the manifest is valid. Automatically runs before all tests.
96
-
@@ -3,9 +3,51 @@ 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
+
6
45
  module Kensa
46
+ <<<<<<< HEAD
7
47
  class UserError < RuntimeError; end
8
48
 
49
+ =======
50
+ >>>>>>> kensa_create
9
51
  class Client
10
52
  def initialize(args, options)
11
53
  @args = args
@@ -16,7 +58,10 @@ module Heroku
16
58
  @options[:filename]
17
59
  end
18
60
 
61
+ #you fucked up
19
62
  class CommandInvalid < Exception; end
63
+ #we fucked up
64
+ class CommandFailed < Exception; end
20
65
 
21
66
  def run!
22
67
  command = @args.shift || @options[:command]
@@ -29,6 +74,23 @@ module Heroku
29
74
  Screen.new.message "Initialized new addon manifest in #{filename}\n"
30
75
  end
31
76
 
77
+ def create
78
+ app_name = @args.shift
79
+ template = @options[:template]
80
+ raise CommandInvalid.new("Need git to supply a template") unless template
81
+ raise CommandInvalid.new("Need git to supply an application name") unless app_name
82
+
83
+ begin
84
+ Git.clone(app_name, template)
85
+ rescue Exception => e
86
+ raise CommandFailed.new("error cloning #{Git.clone_url(template)} into #{app_name}")
87
+ end
88
+
89
+ Dir.chdir("./#{app_name}")
90
+ `./after_clone #{app_name}` if File.exist?('./after_clone')
91
+ end
92
+
93
+
32
94
  def test
33
95
  case check = @args.shift
34
96
  when "manifest"
@@ -1,6 +1,6 @@
1
1
  module Heroku
2
2
  module Kensa
3
- VERSION = "1.2.0rc4"
3
+ VERSION = "1.2.0rc5"
4
4
  end
5
5
  end
6
6
 
data/test.rb ADDED
@@ -0,0 +1 @@
1
+ puts ARGV
@@ -0,0 +1,12 @@
1
+ $:.unshift(File.expand_path("../..",__FILE__))
2
+ require 'test/lib/dependencies'
3
+
4
+ class CreateTest < Test::Unit::TestCase
5
+ def kensa(cmd)
6
+ `./bin/kensa #{cmd}`
7
+ end
8
+
9
+ def test_create_with_manifest
10
+ kensa "create"
11
+ end
12
+ end
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.0rc4
4
+ version: 1.2.0rc5
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors:
@@ -17,7 +17,7 @@ date: 2011-10-25 00:00:00.000000000Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: json
20
- requirement: &70143233487380 !ruby/object:Gem::Requirement
20
+ requirement: &70286834541360 !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: *70143233487380
28
+ version_requirements: *70286834541360
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: sinatra
31
- requirement: &70143233486780 !ruby/object:Gem::Requirement
31
+ requirement: &70286834540620 !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: *70143233486780
39
+ version_requirements: *70286834540620
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: timecop
42
- requirement: &70143233486160 !ruby/object:Gem::Requirement
42
+ requirement: &70286834539660 !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: *70143233486160
50
+ version_requirements: *70286834539660
51
51
  - !ruby/object:Gem::Dependency
52
52
  name: rr
53
- requirement: &70143233485520 !ruby/object:Gem::Requirement
53
+ requirement: &70286834538920 !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: *70143233485520
61
+ version_requirements: *70286834538920
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: artifice
64
- requirement: &70143233484660 !ruby/object:Gem::Requirement
64
+ requirement: &70286834538100 !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: *70143233484660
72
+ version_requirements: *70286834538100
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: haml
75
- requirement: &70143233484140 !ruby/object:Gem::Requirement
75
+ requirement: &70286834537140 !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: *70143233484140
83
+ version_requirements: *70286834537140
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: test-unit
86
- requirement: &70143233483660 !ruby/object:Gem::Requirement
86
+ requirement: &70286834536360 !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: *70143233483660
94
+ version_requirements: *70286834536360
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: rest-client
97
- requirement: &70143233482980 !ruby/object:Gem::Requirement
97
+ requirement: &70286834534940 !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: *70143233482980
105
+ version_requirements: *70286834534940
106
106
  - !ruby/object:Gem::Dependency
107
107
  name: yajl-ruby
108
- requirement: &70143233482240 !ruby/object:Gem::Requirement
108
+ requirement: &70286834534060 !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: *70143233482240
116
+ version_requirements: *70286834534060
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: term-ansicolor
119
- requirement: &70143233481460 !ruby/object:Gem::Requirement
119
+ requirement: &70286834532820 !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: *70143233481460
127
+ version_requirements: *70286834532820
128
128
  - !ruby/object:Gem::Dependency
129
129
  name: launchy
130
- requirement: &70143233476760 !ruby/object:Gem::Requirement
130
+ requirement: &70286834531800 !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: *70143233476760
138
+ version_requirements: *70286834531800
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: mechanize
141
- requirement: &70143233476160 !ruby/object:Gem::Requirement
141
+ requirement: &70286834530740 !ruby/object:Gem::Requirement
142
142
  none: false
143
143
  requirements:
144
144
  - - ~>
@@ -146,10 +146,10 @@ dependencies:
146
146
  version: 1.0.0
147
147
  type: :runtime
148
148
  prerelease: false
149
- version_requirements: *70143233476160
149
+ version_requirements: *70286834530740
150
150
  - !ruby/object:Gem::Dependency
151
151
  name: artifice
152
- requirement: &70143233475540 !ruby/object:Gem::Requirement
152
+ requirement: &70286834529480 !ruby/object:Gem::Requirement
153
153
  none: false
154
154
  requirements:
155
155
  - - ~>
@@ -157,7 +157,7 @@ dependencies:
157
157
  version: 0.6.0
158
158
  type: :runtime
159
159
  prerelease: false
160
- version_requirements: *70143233475540
160
+ version_requirements: *70286834529480
161
161
  description: Kensa is a command-line tool to help add-on providers integrating their
162
162
  services with Heroku. It manages manifest files, and provides a TDD-like approach
163
163
  for programmers to test and develop their APIs.
@@ -182,6 +182,8 @@ files:
182
182
  - lib/heroku/kensa/sso.rb
183
183
  - lib/heroku/kensa/version.rb
184
184
  - set-env.sh
185
+ - test.rb
186
+ - test/create_test.rb
185
187
  - test/deprovision_test.rb
186
188
  - test/helper.rb
187
189
  - test/lib/dependencies.rb
@@ -208,6 +210,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
208
210
  - - ! '>='
209
211
  - !ruby/object:Gem::Version
210
212
  version: '0'
213
+ segments:
214
+ - 0
215
+ hash: -2094105926373190861
211
216
  required_rubygems_version: !ruby/object:Gem::Requirement
212
217
  none: false
213
218
  requirements:
@@ -221,6 +226,7 @@ signing_key:
221
226
  specification_version: 3
222
227
  summary: Tool to help Heroku add-on providers integrating their services
223
228
  test_files:
229
+ - test/create_test.rb
224
230
  - test/deprovision_test.rb
225
231
  - test/helper.rb
226
232
  - test/lib/dependencies.rb