lono 1.1.3 → 2.0.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.
- checksums.yaml +4 -4
- data/.gitmodules +3 -0
- data/CHANGELOG.md +8 -0
- data/README.md +150 -39
- data/bin/lono +2 -2
- data/circle.yml +4 -0
- data/lib/lono.rb +16 -7
- data/lib/lono/cfn.rb +64 -0
- data/lib/lono/cfn/aws_services.rb +37 -0
- data/lib/lono/cfn/base.rb +144 -0
- data/lib/lono/cfn/create.rb +34 -0
- data/lib/lono/cfn/delete.rb +26 -0
- data/lib/lono/cfn/diff.rb +43 -0
- data/lib/lono/cfn/help.rb +93 -0
- data/lib/lono/cfn/preview.rb +133 -0
- data/lib/lono/cfn/update.rb +62 -0
- data/lib/lono/cfn/util.rb +21 -0
- data/lib/lono/cli.rb +19 -10
- data/lib/lono/command.rb +25 -0
- data/lib/lono/help.rb +59 -0
- data/lib/lono/new.rb +3 -2
- data/lib/lono/param.rb +20 -0
- data/lib/lono/param/generator.rb +90 -0
- data/lib/lono/param/help.rb +15 -0
- data/lib/lono/project_checker.rb +44 -0
- data/lib/lono/template.rb +22 -248
- data/lib/lono/template/bashify.rb +39 -0
- data/lib/lono/template/dsl.rb +139 -0
- data/lib/lono/template/help.rb +25 -0
- data/lib/lono/template/template.rb +251 -0
- data/lib/lono/version.rb +1 -1
- data/lib/{starter_project_yaml → starter_projects/json_project}/Gemfile +0 -1
- data/lib/{starter_project_json → starter_projects/json_project}/Guardfile +0 -0
- data/lib/{starter_project_json → starter_projects/json_project}/config/lono.rb +0 -0
- data/lib/{starter_project_json → starter_projects/json_project}/config/lono/api.rb +0 -0
- data/lib/starter_projects/json_project/params/api-web-prod.txt +20 -0
- data/lib/{starter_project_json → starter_projects/json_project}/templates/db.json.erb +0 -0
- data/lib/{starter_project_json → starter_projects/json_project}/templates/partial/host_record.json.erb +0 -0
- data/lib/{starter_project_json → starter_projects/json_project}/templates/partial/server.json.erb +0 -0
- data/lib/{starter_project_json → starter_projects/json_project}/templates/user_data/app.sh.erb +0 -0
- data/lib/{starter_project_json → starter_projects/json_project}/templates/user_data/db.sh.erb +0 -0
- data/lib/{starter_project_json → starter_projects/json_project}/templates/user_data/db2.sh.erb +0 -0
- data/lib/{starter_project_json → starter_projects/json_project}/templates/user_data/ruby_script.rb.erb +0 -0
- data/lib/{starter_project_json → starter_projects/json_project}/templates/web.json.erb +0 -0
- data/lib/{starter_project_json → starter_projects/yaml_project}/Gemfile +0 -1
- data/lib/{starter_project_yaml → starter_projects/yaml_project}/Guardfile +0 -0
- data/lib/{starter_project_yaml → starter_projects/yaml_project}/config/lono.rb +0 -0
- data/lib/{starter_project_yaml → starter_projects/yaml_project}/config/lono/api.rb +0 -0
- data/lib/starter_projects/yaml_project/params/api-web-prod.txt +20 -0
- data/lib/{starter_project_yaml → starter_projects/yaml_project}/templates/db.yml.erb +0 -0
- data/lib/{starter_project_yaml → starter_projects/yaml_project}/templates/partial/host_record.yml.erb +0 -0
- data/lib/{starter_project_yaml → starter_projects/yaml_project}/templates/partial/server.yml.erb +0 -0
- data/lib/{starter_project_yaml → starter_projects/yaml_project}/templates/partial/user_data/bootstrap.sh.erb +0 -0
- data/lib/{starter_project_yaml → starter_projects/yaml_project}/templates/web.yml.erb +0 -0
- data/lono.gemspec +15 -10
- data/spec/fixtures/my_project/config/lono.rb +1 -0
- data/spec/fixtures/my_project/params/my-stack.txt +3 -0
- data/spec/fixtures/my_project/templates/.gitkeep +0 -0
- data/spec/fixtures/my_project/templates/my-stack.yml.erb +0 -0
- data/spec/lib/lono/cfn_spec.rb +35 -0
- data/spec/lib/lono/new_spec.rb +3 -3
- data/spec/lib/lono/param_spec.rb +15 -0
- data/spec/lib/lono/{dsl_spec.rb → template/dsl_spec.rb} +9 -9
- data/spec/lib/lono/template/template_spec.rb +104 -0
- data/spec/lib/lono/template_spec.rb +22 -37
- data/spec/lib/lono_spec.rb +6 -83
- data/vendor/plissken/Gemfile +14 -0
- data/vendor/plissken/LICENSE.txt +20 -0
- data/vendor/plissken/README.md +46 -0
- data/vendor/plissken/Rakefile +56 -0
- data/vendor/plissken/VERSION +1 -0
- data/vendor/plissken/lib/plissken.rb +1 -0
- data/vendor/plissken/lib/plissken/ext/hash/to_snake_keys.rb +45 -0
- data/vendor/plissken/plissken.gemspec +61 -0
- data/vendor/plissken/spec/lib/to_snake_keys_spec.rb +177 -0
- data/vendor/plissken/spec/spec_helper.rb +90 -0
- data/vendor/plissken/test/helper.rb +20 -0
- data/vendor/plissken/test/plissken/ext/hash/to_snake_keys_test.rb +184 -0
- data/vendor/plissken/test/test_plissken.rb +2 -0
- metadata +115 -39
- data/lib/lono/bashify.rb +0 -41
- data/lib/lono/cli/help.rb +0 -37
- data/lib/lono/dsl.rb +0 -132
data/lib/lono/version.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "thor"
|
2
|
+
|
3
|
+
module Lono
|
4
|
+
class Param < Command
|
5
|
+
autoload :Help, 'lono/param/help'
|
6
|
+
autoload :Generator, 'lono/param/generator'
|
7
|
+
|
8
|
+
class_option :verbose, type: :boolean
|
9
|
+
class_option :noop, type: :boolean
|
10
|
+
class_option :mute, type: :boolean
|
11
|
+
class_option :project_root, desc: "project root to use", default: '.'
|
12
|
+
|
13
|
+
desc "generate NAME", "generate parameter json file for NAME"
|
14
|
+
long_desc Help.generate
|
15
|
+
option :path, desc: "Name of the source that maps to the params txt file. name -> params/NAME.txt. Use this to override the params/NAME.txt convention"
|
16
|
+
def generate
|
17
|
+
Generator.generate_all(options)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
File without changes
|
File without changes
|
data/lib/{starter_project_json → starter_projects/json_project}/templates/partial/server.json.erb
RENAMED
File without changes
|
data/lib/{starter_project_json → starter_projects/json_project}/templates/user_data/app.sh.erb
RENAMED
File without changes
|
data/lib/{starter_project_json → starter_projects/json_project}/templates/user_data/db.sh.erb
RENAMED
File without changes
|
data/lib/{starter_project_json → starter_projects/json_project}/templates/user_data/db2.sh.erb
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "thor"
|
2
|
+
|
3
|
+
module Lono
|
4
|
+
class Param < Command
|
5
|
+
autoload :Help, 'lono/param/help'
|
6
|
+
autoload :Generator, 'lono/param/generator'
|
7
|
+
|
8
|
+
class_option :verbose, type: :boolean
|
9
|
+
class_option :noop, type: :boolean
|
10
|
+
class_option :mute, type: :boolean
|
11
|
+
class_option :project_root, desc: "project root to use", default: '.'
|
12
|
+
|
13
|
+
desc "generate NAME", "generate parameter json file for NAME"
|
14
|
+
long_desc Help.generate
|
15
|
+
option :path, desc: "Name of the source that maps to the params txt file. name -> params/NAME.txt. Use this to override the params/NAME.txt convention"
|
16
|
+
def generate
|
17
|
+
Generator.generate_all(options)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
File without changes
|
File without changes
|
data/lib/{starter_project_yaml → starter_projects/yaml_project}/templates/partial/server.yml.erb
RENAMED
File without changes
|
File without changes
|
File without changes
|
data/lono.gemspec
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
2
|
+
require_relative "lib/lono/version"
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Tung Nguyen"]
|
@@ -8,25 +8,30 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.summary = %q{Lono is a CloudFormation Template ruby generator. Lono generates CloudFormation templates based on ERB templates.}
|
9
9
|
gem.homepage = "http://github.com/tongueroo/lono"
|
10
10
|
|
11
|
-
gem.files = `git ls-files`.split($\)
|
11
|
+
gem.files = `git ls-files`.split($\) + Dir.glob("vendor/**/*")
|
12
12
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
13
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
14
|
gem.name = "lono"
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = Lono::VERSION
|
17
|
-
gem.license =
|
17
|
+
gem.license = "MIT"
|
18
18
|
|
19
|
-
gem.add_dependency "rake"
|
20
19
|
gem.add_dependency "json"
|
21
20
|
gem.add_dependency "thor"
|
22
|
-
gem.add_dependency
|
23
|
-
gem.add_dependency
|
21
|
+
gem.add_dependency "guard"
|
22
|
+
gem.add_dependency "rb-fsevent"
|
24
23
|
gem.add_dependency "guard-cloudformation"
|
25
24
|
gem.add_dependency "guard-lono"
|
26
25
|
gem.add_dependency "colorize"
|
26
|
+
gem.add_dependency "hashie"
|
27
|
+
gem.add_dependency "aws-sdk"
|
28
|
+
# gem.add_dependency "plissken" # dependency for vendor/lono-params
|
29
|
+
# using the vendor fork version: https://github.com/tongueroo/plissken
|
30
|
+
# until https://github.com/futurechimp/plissken/pull/6 gets merged
|
27
31
|
|
28
|
-
gem.add_development_dependency
|
29
|
-
gem.add_development_dependency
|
30
|
-
gem.add_development_dependency
|
31
|
-
gem.add_development_dependency
|
32
|
+
gem.add_development_dependency "byebug"
|
33
|
+
gem.add_development_dependency "guard-bundler"
|
34
|
+
gem.add_development_dependency "guard-rspec"
|
35
|
+
gem.add_development_dependency "rake"
|
36
|
+
gem.add_development_dependency "rspec"
|
32
37
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# this file is just in here to get the lono-cfn spec to pass
|
File without changes
|
File without changes
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative "../../spec_helper"
|
2
|
+
|
3
|
+
describe Lono::Cfn do
|
4
|
+
before(:all) do
|
5
|
+
@args = "--noop --project-root spec/fixtures/my_project"
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "lono cfn" do
|
9
|
+
it "create stack" do
|
10
|
+
out = execute("bin/lono cfn create my-stack #{@args}")
|
11
|
+
expect(out).to include("Creating")
|
12
|
+
end
|
13
|
+
|
14
|
+
it "update stack" do
|
15
|
+
out = execute("bin/lono cfn update my-stack #{@args}")
|
16
|
+
expect(out).to include("Updating")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "delete stack" do
|
20
|
+
out = execute("bin/lono cfn delete my-stack #{@args}")
|
21
|
+
expect(out).to include("Deleted")
|
22
|
+
end
|
23
|
+
|
24
|
+
it "preview stack" do
|
25
|
+
out = execute("bin/lono cfn preview my-stack #{@args}")
|
26
|
+
expect(out).to include("CloudFormation preview")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "diff stack" do
|
30
|
+
out = execute("bin/lono cfn diff my-stack #{@args}")
|
31
|
+
expect(out).to include("diff")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
data/spec/lib/lono/new_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "../../spec_helper"
|
2
2
|
|
3
3
|
describe Lono::New do
|
4
4
|
before(:each) do
|
@@ -20,7 +20,7 @@ describe Lono::New do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should be able to lono generate" do
|
23
|
-
dsl = Lono::DSL.new(
|
23
|
+
dsl = Lono::Template::DSL.new(
|
24
24
|
project_root: @project_root,
|
25
25
|
quiet: true
|
26
26
|
)
|
@@ -42,7 +42,7 @@ describe Lono::New do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should be able to lono generate" do
|
45
|
-
dsl = Lono::DSL.new(
|
45
|
+
dsl = Lono::Template::DSL.new(
|
46
46
|
project_root: @project_root,
|
47
47
|
quiet: true
|
48
48
|
)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative "../../spec_helper"
|
2
|
+
|
3
|
+
describe Lono::Param do
|
4
|
+
before(:all) do
|
5
|
+
@args = "--project-root spec/fixtures/my_project"
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "lono param" do
|
9
|
+
it "generate" do
|
10
|
+
out = execute("bin/lono param generate #{@args}")
|
11
|
+
expect(out).to include("Generating")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
require_relative "../../../spec_helper"
|
2
2
|
|
3
|
-
describe Lono::DSL do
|
3
|
+
describe Lono::Template::DSL do
|
4
4
|
before(:each) do
|
5
5
|
@project_root = File.expand_path("../../../../tmp/lono_project", __FILE__)
|
6
6
|
end
|
@@ -20,11 +20,11 @@ describe Lono::DSL do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "json" do
|
23
|
-
dsl = Lono::DSL.new(
|
23
|
+
dsl = Lono::Template::DSL.new(
|
24
24
|
project_root: @project_root,
|
25
25
|
quiet: true
|
26
26
|
)
|
27
|
-
dsl.
|
27
|
+
dsl.evaluate_templates # run the dependent instance_eval and load_subfoler so @templates is assigned
|
28
28
|
detected_format = dsl.detect_format
|
29
29
|
expect(detected_format).to eq 'json'
|
30
30
|
end
|
@@ -42,11 +42,11 @@ describe Lono::DSL do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "yaml" do
|
45
|
-
dsl = Lono::DSL.new(
|
45
|
+
dsl = Lono::Template::DSL.new(
|
46
46
|
project_root: @project_root,
|
47
47
|
quiet: true
|
48
48
|
)
|
49
|
-
dsl.
|
49
|
+
dsl.evaluate_templates # run the dependent instance_eval and load_subfoler so @templates is assigned
|
50
50
|
detected_format = dsl.detect_format
|
51
51
|
expect(detected_format).to eq 'yaml'
|
52
52
|
end
|
@@ -54,7 +54,7 @@ describe Lono::DSL do
|
|
54
54
|
|
55
55
|
context "multiple format starter project" do
|
56
56
|
# it "yaml" do
|
57
|
-
# dsl = Lono::DSL.new(
|
57
|
+
# dsl = Lono::Template::DSL.new(
|
58
58
|
# project_root: @project,
|
59
59
|
# quiet: true
|
60
60
|
# )
|
@@ -73,7 +73,7 @@ describe Lono::DSL do
|
|
73
73
|
)
|
74
74
|
new_project.run
|
75
75
|
|
76
|
-
dsl = Lono::DSL.new(
|
76
|
+
dsl = Lono::Template::DSL.new(
|
77
77
|
project_root: @project_root,
|
78
78
|
quiet: true
|
79
79
|
)
|
@@ -141,7 +141,7 @@ describe Lono::DSL do
|
|
141
141
|
|
142
142
|
it "should transform bash script to CF template user_data" do
|
143
143
|
block = Proc.new { }
|
144
|
-
template = Lono::Template.new("foo", block)
|
144
|
+
template = Lono::Template::Template.new("foo", block)
|
145
145
|
|
146
146
|
line = 'echo {"Ref"=>"AWS::StackName"} > /tmp/stack_name ; {"Ref"=>"Ami"}'
|
147
147
|
data = template.transform(line)
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require_relative "../../../spec_helper"
|
2
|
+
|
3
|
+
describe Lono::Template do
|
4
|
+
let(:template) do
|
5
|
+
block = Proc.new {}
|
6
|
+
template = Lono::Template::Template.new("output_name.yml", block)
|
7
|
+
|
8
|
+
# override the puts and printf methods within the test
|
9
|
+
def template.messages
|
10
|
+
@messages
|
11
|
+
end
|
12
|
+
|
13
|
+
def template.puts(msg)
|
14
|
+
@messages ||= []
|
15
|
+
@messages << msg
|
16
|
+
nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def template.printf(*args)
|
20
|
+
@messages ||= []
|
21
|
+
@messages << args
|
22
|
+
end
|
23
|
+
|
24
|
+
template
|
25
|
+
end
|
26
|
+
|
27
|
+
context "valid erb template" do
|
28
|
+
it "should be able to lono generate" do
|
29
|
+
template.erb_result("path", "template")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "invalid erb template" do
|
34
|
+
it "should print out useful error message about undefined variable" do
|
35
|
+
template.erb_result("path", "variable does not exist\n<% variable %>\nanother line")
|
36
|
+
errors = template.messages.grep(/Error evaluating ERB template on line/)
|
37
|
+
expect(errors).not_to be_empty
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should print out useful error message about syntax error" do
|
41
|
+
template.erb_result("path", "<%s dsfds ?%>\nanother line")
|
42
|
+
errors = template.messages.grep(/Error evaluating ERB template on line/)
|
43
|
+
expect(errors).not_to be_empty
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "parsing" do
|
48
|
+
it "should transform bash script into json array with cloudformation objects" do
|
49
|
+
block = Proc.new { }
|
50
|
+
template = Lono::Template::Template.new("foo", block)
|
51
|
+
|
52
|
+
line = '0{2345}7'
|
53
|
+
expect(template.bracket_positions(line)).to eq [[0,0],[1,6],[7,7]]
|
54
|
+
line = '0{2}4{6}' # more than one bracket
|
55
|
+
expect(template.bracket_positions(line)).to eq [[0,0],[1,3],[4,4],[5,7]]
|
56
|
+
line = '0{2}4{6{8}0}2' # nested brackets
|
57
|
+
expect(template.bracket_positions(line)).to eq [[0,0],[1,3],[4,4],[5,11],[12,12]]
|
58
|
+
|
59
|
+
line = '{'
|
60
|
+
expect(template.decompose(line)).to eq ['{']
|
61
|
+
|
62
|
+
##########################
|
63
|
+
line = '1{"Ref"=>"A"}{"Ref"=>"B"}'
|
64
|
+
expect(template.decompose(line)).to eq ['1','{"Ref"=>"A"}','{"Ref"=>"B"}']
|
65
|
+
|
66
|
+
line = '{"Ref"=>"A"}{"Ref"=>"B"}2'
|
67
|
+
expect(template.decompose(line)).to eq ['{"Ref"=>"A"}','{"Ref"=>"B"}','2']
|
68
|
+
|
69
|
+
line = '1{"Ref"=>"A"}{"Ref"=>"B"}2'
|
70
|
+
expect(template.decompose(line)).to eq ['1','{"Ref"=>"A"}','{"Ref"=>"B"}','2']
|
71
|
+
|
72
|
+
line = '{"Ref"=>"A"}{"Ref"=>"B"}'
|
73
|
+
expect(template.decompose(line)).to eq ['{"Ref"=>"A"}','{"Ref"=>"B"}']
|
74
|
+
|
75
|
+
line = 'Ref{"Ref"=>"B"}'
|
76
|
+
expect(template.decompose(line)).to eq ['Ref','{"Ref"=>"B"}']
|
77
|
+
##############################
|
78
|
+
|
79
|
+
# only allow whitelist
|
80
|
+
line = 'a{b}{"foo"=>"bar"}h'
|
81
|
+
expect(template.decompose(line)).to eq ['a{b}{"foo"=>"bar"}h']
|
82
|
+
|
83
|
+
line = 'a{b}{"Ref"=>"bar"}h'
|
84
|
+
expect(template.decompose(line)).to eq ['a{b}','{"Ref"=>"bar"}','h']
|
85
|
+
line = 'a{"Ref"=>"bar"}c{"Ref"=>{"cat"=>"mouse"}}e' # nested brackets
|
86
|
+
expect(template.decompose(line)).to eq ['a','{"Ref"=>"bar"}','c','{"Ref"=>{"cat"=>"mouse"}}','e']
|
87
|
+
|
88
|
+
line = 'test{"Ref"=>"world"}me' # nested brackets
|
89
|
+
decomposition = template.decompose(line)
|
90
|
+
result = template.recompose(decomposition)
|
91
|
+
expect(result).to eq ["test", {"Ref" => "world"}, "me"]
|
92
|
+
|
93
|
+
line = 'test{"Ref"=>"world"}me'
|
94
|
+
expect(template.transform(line)).to eq ["test", {"Ref" => "world"}, "me\n"]
|
95
|
+
line = '{"Ref"=>"world"}'
|
96
|
+
expect(template.transform(line)).to eq [{"Ref" => "world"}, "\n"]
|
97
|
+
line = '{'
|
98
|
+
expect(template.transform(line)).to eq ["{\n"]
|
99
|
+
line = 'Ref{"Ref"=>"B"}'
|
100
|
+
expect(template.transform(line)).to eq ['Ref',{"Ref"=>"B"}, "\n"]
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
@@ -1,46 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
describe Lono
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
def template.puts(msg)
|
14
|
-
@messages ||= []
|
15
|
-
@messages << msg
|
16
|
-
nil
|
17
|
-
end
|
18
|
-
|
19
|
-
def template.printf(*args)
|
20
|
-
@messages ||= []
|
21
|
-
@messages << args
|
22
|
-
end
|
23
|
-
|
24
|
-
template
|
1
|
+
require_relative "../../spec_helper"
|
2
|
+
|
3
|
+
describe Lono do
|
4
|
+
before(:each) do
|
5
|
+
lono_bin = File.expand_path("../../../../bin/lono", __FILE__)
|
6
|
+
@project_root = File.expand_path("../../../../tmp/lono_project", __FILE__)
|
7
|
+
dir = File.dirname(@project_root)
|
8
|
+
name = File.basename(@project_root)
|
9
|
+
FileUtils.mkdir(dir) unless File.exist?(dir)
|
10
|
+
execute("cd #{dir} && #{lono_bin} new #{name} -f -q --format json")
|
25
11
|
end
|
26
12
|
|
27
|
-
|
28
|
-
|
29
|
-
template.erb_result("path", "template")
|
30
|
-
end
|
13
|
+
after(:each) do
|
14
|
+
FileUtils.rm_rf(@project_root) unless ENV['KEEP_TMP_PROJECT']
|
31
15
|
end
|
32
16
|
|
33
|
-
|
34
|
-
it "should
|
35
|
-
|
36
|
-
|
37
|
-
expect(
|
17
|
+
describe "bashify" do
|
18
|
+
it "should convert cfn user_data to bash script" do
|
19
|
+
path = "#{$root}/spec/fixtures/cfn.json"
|
20
|
+
out = execute("./bin/lono template bashify #{path}")
|
21
|
+
expect(out).to match /bash -lexv/
|
38
22
|
end
|
23
|
+
end
|
39
24
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
expect(
|
25
|
+
describe "cli specs" do
|
26
|
+
it "should generate templates" do
|
27
|
+
out = execute("./bin/lono template generate -c --project-root #{@project_root}")
|
28
|
+
expect(out).to match /Generating CloudFormation templates/
|
44
29
|
end
|
45
30
|
end
|
46
31
|
end
|