lono 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -4
- data/lib/lono.rb +2 -1
- data/lib/lono/cli.rb +16 -21
- data/lib/lono/cli/help.rb +37 -0
- data/lib/lono/dsl.rb +16 -2
- data/lib/lono/{task.rb → new.rb} +10 -21
- data/lib/lono/version.rb +1 -1
- data/lib/starter_project/Gemfile +3 -0
- data/lib/starter_project/config/lono/api.rb +0 -12
- data/lib/starter_project/templates/app.json.erb +1 -0
- data/lib/starter_project/templates/db.json.erb +1 -0
- data/lono.gemspec +2 -0
- data/spec/lib/lono_spec.rb +9 -6
- metadata +21 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0cf2d662d15f91ab5a2be1fd65341349b343f8e5
|
4
|
+
data.tar.gz: ac0fb9f6cabba24f8d9c486100d2af4841131dc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02479cb711b6b44348eb0d541cd1669dcc64166c329d67b969180baffba752a7aafd287c672843faa61462f867231edcc763d2be334eaaaeb6a4140f2b9ef700
|
7
|
+
data.tar.gz: a8c72b7ab907c2f5b9016a06037f9ef1644df59586fac5618708f2aa9ff91f3a524a4a61433dd9ef3f2de883c53df84da5aa52e3437762754066987352284394
|
data/README.md
CHANGED
@@ -16,10 +16,7 @@ Lono is a Cloud Formation Template ruby generator. Lono generates Cloud Formati
|
|
16
16
|
## Usage
|
17
17
|
|
18
18
|
<pre>
|
19
|
-
$
|
20
|
-
$ mkdir lono
|
21
|
-
$ cd lono
|
22
|
-
$ lono init
|
19
|
+
$ lono new lono
|
23
20
|
</pre>
|
24
21
|
|
25
22
|
This sets up a starter lono project with example templates.
|
data/lib/lono.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'pp'
|
3
|
+
require 'colorize'
|
3
4
|
|
4
5
|
$:.unshift File.dirname(__FILE__)
|
5
6
|
require 'ext/hash'
|
6
7
|
require 'lono/version'
|
7
8
|
require 'lono/cli'
|
8
|
-
require 'lono/
|
9
|
+
require 'lono/new'
|
9
10
|
require 'lono/template'
|
10
11
|
require 'lono/dsl'
|
11
12
|
require 'lono/bashify'
|
data/lib/lono/cli.rb
CHANGED
@@ -1,36 +1,31 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require 'lono/cli/help'
|
2
3
|
|
3
4
|
module Lono
|
4
5
|
class CLI < Thor
|
5
6
|
|
6
|
-
desc "
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
Lono::Task.init(options.clone)
|
7
|
+
desc "new [NAME]", "Generates lono starter project"
|
8
|
+
Help.new_long_desc
|
9
|
+
option :force, :type => :boolean, :aliases => "-f", :desc => "override existing starter files"
|
10
|
+
option :quiet, :type => :boolean, :aliases => "-q", :desc => "silence the output"
|
11
|
+
def new(project_root)
|
12
|
+
Lono::New.new(options.clone.merge(:project_root => project_root)).run
|
13
13
|
end
|
14
14
|
|
15
15
|
desc "generate", "Generate the cloud formation templates"
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
Builds the cloud formation templates files based on config/lono.rb and writes them to the output folder on the filesystem.
|
23
|
-
EOL
|
24
|
-
method_option :clean, :type => :boolean, :aliases => "-c", :desc => "remove all output files before generating"
|
25
|
-
method_option :project_root, :default => ".", :aliases => "-r", :desc => "project root"
|
26
|
-
method_option :quiet, :type => :boolean, :aliases => "-q", :desc => "silence the output"
|
16
|
+
Help.generate
|
17
|
+
option :clean, :type => :boolean, :aliases => "-c", :desc => "remove all output files before generating"
|
18
|
+
option :project_root, :default => ".", :aliases => "-r", :desc => "project root"
|
19
|
+
option :quiet, :type => :boolean, :aliases => "-q", :desc => "silence the output"
|
20
|
+
option :pretty, :type => :boolean, :defautlt => true, :desc => "do not json prettier the output"
|
27
21
|
def generate
|
28
|
-
Lono::
|
22
|
+
Lono::DSL.new(options.clone).run
|
29
23
|
end
|
30
24
|
|
31
|
-
desc "bashify [
|
25
|
+
desc "bashify [URL-OR-PATH]", "Convert the UserData section of an existing Cloud Formation Template to a starter bash script that is compatiable with lono"
|
26
|
+
Help.bashify
|
32
27
|
def bashify(path)
|
33
|
-
Lono::
|
28
|
+
Lono::Bashify.new(:path => path).run
|
34
29
|
end
|
35
30
|
|
36
31
|
desc "version", "Prints version"
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Lono
|
2
|
+
module Help
|
3
|
+
def new_long_desc
|
4
|
+
<<-EOL
|
5
|
+
Examples:
|
6
|
+
|
7
|
+
$ lono new project
|
8
|
+
|
9
|
+
$ lono new lono
|
10
|
+
EOL
|
11
|
+
end
|
12
|
+
|
13
|
+
def generate
|
14
|
+
<<-EOL
|
15
|
+
Examples:
|
16
|
+
|
17
|
+
$ lono generate
|
18
|
+
|
19
|
+
$ lono g -c # shortcut
|
20
|
+
|
21
|
+
Builds the cloud formation templates files based on lono project and writes them to the output folder on the filesystem.
|
22
|
+
EOL
|
23
|
+
end
|
24
|
+
|
25
|
+
def bashify
|
26
|
+
<<-EOL
|
27
|
+
Examples:
|
28
|
+
|
29
|
+
$ lono bashify /path/to/cloudformation-template.json
|
30
|
+
|
31
|
+
$ lono bashify https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2WebSiteSample.template
|
32
|
+
EOL
|
33
|
+
end
|
34
|
+
|
35
|
+
extend self
|
36
|
+
end
|
37
|
+
end
|
data/lib/lono/dsl.rb
CHANGED
@@ -38,11 +38,25 @@ module Lono
|
|
38
38
|
@results.each do |name,json|
|
39
39
|
path = "#{output_path}/#{name}"
|
40
40
|
puts " #{path}" unless @options[:quiet]
|
41
|
-
|
42
|
-
File.open(path, 'w') {|f| f.write(
|
41
|
+
validate(json, path)
|
42
|
+
File.open(path, 'w') {|f| f.write(output_json(json)) }
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
+
def validate(json, path)
|
47
|
+
begin
|
48
|
+
JSON.parse(json)
|
49
|
+
rescue JSON::ParserError => e
|
50
|
+
puts "Invalid json. Output written to #{path} for debugging".colorize(:red)
|
51
|
+
File.open(path, 'w') {|f| f.write(json) }
|
52
|
+
exit 1
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def output_json(json)
|
57
|
+
@options[:pretty] ? JSON.pretty_generate(JSON.parse(json)) : json
|
58
|
+
end
|
59
|
+
|
46
60
|
def run(options={})
|
47
61
|
evaluate
|
48
62
|
build
|
data/lib/lono/{task.rb → new.rb}
RENAMED
@@ -1,14 +1,19 @@
|
|
1
1
|
module Lono
|
2
|
-
class
|
3
|
-
|
4
|
-
|
2
|
+
class New
|
3
|
+
attr_reader :options
|
4
|
+
def initialize(options)
|
5
|
+
@options = options
|
6
|
+
@project_root = options[:project_root] || '.'
|
7
|
+
end
|
8
|
+
|
9
|
+
def run
|
5
10
|
puts "Setting up lono project" unless options[:quiet]
|
6
11
|
source_root = File.expand_path("../../starter_project", __FILE__)
|
7
12
|
paths = Dir.glob("#{source_root}/**/*").
|
8
13
|
select {|p| File.file?(p) }
|
9
14
|
paths.each do |src|
|
10
15
|
dest = src.gsub(%r{.*starter_project/},'')
|
11
|
-
dest = "#{project_root}/#{dest}"
|
16
|
+
dest = "#{@project_root}/#{dest}"
|
12
17
|
|
13
18
|
if File.exist?(dest) and !options[:force]
|
14
19
|
puts "already exists: #{dest}" unless options[:quiet]
|
@@ -21,21 +26,5 @@ module Lono
|
|
21
26
|
end
|
22
27
|
puts "Starter lono project created"
|
23
28
|
end
|
24
|
-
def self.generate(options)
|
25
|
-
new(options).generate
|
26
|
-
end
|
27
|
-
|
28
|
-
def initialize(options={})
|
29
|
-
@options = options
|
30
|
-
@dsl = options.empty? ? DSL.new : DSL.new(options)
|
31
|
-
end
|
32
|
-
def generate
|
33
|
-
@dsl.run(@options)
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.bashify(path)
|
37
|
-
@bashify = Lono::Bashify.new(:path => path)
|
38
|
-
@bashify.run
|
39
|
-
end
|
40
29
|
end
|
41
|
-
end
|
30
|
+
end
|
data/lib/lono/version.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
template "prod-api-app.json" do
|
2
|
-
env,app,role = name.sub('.json','').split('-')
|
3
2
|
source "app.json.erb"
|
4
3
|
variables(
|
5
|
-
:env => env,
|
6
|
-
:app => app,
|
7
|
-
:role => role,
|
8
4
|
:ami => "ami-123",
|
9
5
|
:instance_type => "m1.small",
|
10
6
|
:port => "80",
|
@@ -21,12 +17,8 @@ template "prod-api-app.json" do
|
|
21
17
|
end
|
22
18
|
|
23
19
|
template "prod-api-worker.json" do
|
24
|
-
env,app,role = name.sub('.json','').split('-')
|
25
20
|
source "app.json.erb"
|
26
21
|
variables(
|
27
|
-
:env => env,
|
28
|
-
:app => app,
|
29
|
-
:role => role,
|
30
22
|
:ami => "ami-123",
|
31
23
|
:instance_type => "m1.small",
|
32
24
|
:port => "80",
|
@@ -44,12 +36,8 @@ template "prod-api-worker.json" do
|
|
44
36
|
end
|
45
37
|
|
46
38
|
template "prod-api-redis.json" do
|
47
|
-
env,app,role = name.sub('.json','').split('-')
|
48
39
|
source "db.json.erb"
|
49
40
|
variables(
|
50
|
-
:env => env,
|
51
|
-
:app => app,
|
52
|
-
:role => role,
|
53
41
|
:ami => "ami-456",
|
54
42
|
:instance_type => "m1.small",
|
55
43
|
:port => "80",
|
data/lono.gemspec
CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.name = "lono"
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = Lono::VERSION
|
17
|
+
gem.license = 'MIT'
|
17
18
|
|
18
19
|
gem.add_dependency "rake"
|
19
20
|
gem.add_dependency "json"
|
@@ -23,6 +24,7 @@ Gem::Specification.new do |gem|
|
|
23
24
|
gem.add_dependency 'rb-fsevent'
|
24
25
|
gem.add_dependency "guard-cloudformation"
|
25
26
|
gem.add_dependency "guard-lono"
|
27
|
+
gem.add_dependency "colorize"
|
26
28
|
|
27
29
|
gem.add_development_dependency 'rspec'
|
28
30
|
gem.add_development_dependency 'guard-rspec'
|
data/spec/lib/lono_spec.rb
CHANGED
@@ -2,13 +2,16 @@ require File.expand_path("../../spec_helper", __FILE__)
|
|
2
2
|
|
3
3
|
describe Lono do
|
4
4
|
before(:each) do
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
lono_bin = File.expand_path("../../../bin/lono", __FILE__)
|
6
|
+
@project = File.expand_path("../../../tmp/lono_project", __FILE__)
|
7
|
+
dir = File.dirname(@project)
|
8
|
+
name = File.basename(@project)
|
9
|
+
FileUtils.mkdir(dir) unless File.exist?(dir)
|
10
|
+
execute("cd #{dir} && #{lono_bin} new #{name} -f -q ")
|
8
11
|
end
|
9
12
|
|
10
13
|
after(:each) do
|
11
|
-
FileUtils.rm_rf(@project)
|
14
|
+
FileUtils.rm_rf(@project) unless ENV['LEAVE_TMP_PROJECT']
|
12
15
|
end
|
13
16
|
|
14
17
|
describe "bashify" do
|
@@ -174,10 +177,10 @@ describe Lono do
|
|
174
177
|
end
|
175
178
|
|
176
179
|
it "task should generate cloud formation templates" do
|
177
|
-
Lono::
|
180
|
+
Lono::DSL.new(
|
178
181
|
:project_root => @project,
|
179
182
|
:quiet => true
|
180
|
-
)
|
183
|
+
).run
|
181
184
|
raw = IO.read("#{@project}/output/prod-api-app.json")
|
182
185
|
json = JSON.load(raw)
|
183
186
|
json['Description'].should == "Api Stack"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lono
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - '>='
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: colorize
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: rspec
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -187,10 +201,12 @@ files:
|
|
187
201
|
- lib/lono.rb
|
188
202
|
- lib/lono/bashify.rb
|
189
203
|
- lib/lono/cli.rb
|
204
|
+
- lib/lono/cli/help.rb
|
190
205
|
- lib/lono/dsl.rb
|
191
|
-
- lib/lono/
|
206
|
+
- lib/lono/new.rb
|
192
207
|
- lib/lono/template.rb
|
193
208
|
- lib/lono/version.rb
|
209
|
+
- lib/starter_project/Gemfile
|
194
210
|
- lib/starter_project/Guardfile
|
195
211
|
- lib/starter_project/config/lono.rb
|
196
212
|
- lib/starter_project/config/lono/api.rb
|
@@ -207,7 +223,8 @@ files:
|
|
207
223
|
- spec/lib/lono_spec.rb
|
208
224
|
- spec/spec_helper.rb
|
209
225
|
homepage: http://github.com/tongueroo/lono
|
210
|
-
licenses:
|
226
|
+
licenses:
|
227
|
+
- MIT
|
211
228
|
metadata: {}
|
212
229
|
post_install_message:
|
213
230
|
rdoc_options: []
|