dslable 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +7 -7
- data/lib/dslable/version.rb +3 -3
- data/lib/dslable_args.rb +44 -44
- data/lib/dslable_core.rb +81 -81
- data/lib/dslable_dsl.rb +50 -50
- data/lib/dslable_field.rb +36 -36
- data/lib/generators/gem_template.rb +24 -24
- data/lib/generators/product_codes/cli.rb +11 -11
- data/lib/generators/product_codes/core.rb +16 -12
- data/lib/generators/product_codes/dsl.rb +14 -14
- data/lib/generators/product_codes/dsl_model.rb +10 -10
- data/lib/generators/rspec/spec_template.rb +21 -21
- data/lib/generators/rspec/specs.rb +27 -27
- data/lib/generators/settings/gemfile.rb +8 -8
- data/lib/generators/workflow.rb +76 -76
- data/spec/dslable_args_spec.rb +35 -29
- data/spec/dslable_core_spec.rb +25 -25
- data/spec/dslable_dsl_spec.rb +32 -32
- data/spec/dslable_field_spec.rb +15 -15
- data/spec/generators/gem_template_spec.rb +7 -7
- data/spec/generators/product_codes/cli_spec.rb +13 -13
- data/spec/generators/product_codes/core_spec.rb +24 -17
- data/spec/generators/product_codes/dsl_model_spec.rb +12 -12
- data/spec/generators/product_codes/dsl_spec.rb +15 -14
- data/spec/generators/rspec/spec_template_spec.rb +8 -8
- data/spec/generators/rspec/specs_spec.rb +8 -8
- data/spec/generators/settings/gemfile_spec.rb +11 -11
- data/spec/generators/workflow_spec.rb +11 -11
- data/spec/spec_helper.rb +2 -2
- metadata +16 -16
@@ -1,24 +1,24 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'generators/generators'
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
module Dslable::Generators
|
6
|
-
# Dslable::Generators Gem Template Generator
|
7
|
-
class GemTemplate
|
8
|
-
attr_accessor :dsl
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
#- _dsl: input from dsl
|
13
|
-
def initialize(_dsl)
|
14
|
-
@dsl = _dsl
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
def generate
|
19
|
-
`bundle gem #{@dsl._gem_name}`
|
20
|
-
Dir.chdir(@dsl._gem_name)
|
21
|
-
FileUtils.rm_rf("./lib/#{@dsl._gem_name}.rb")
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'generators/generators'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
module Dslable::Generators
|
6
|
+
# Dslable::Generators Gem Template Generator
|
7
|
+
class GemTemplate
|
8
|
+
attr_accessor :dsl
|
9
|
+
|
10
|
+
# == initialize generate gem template
|
11
|
+
# === Params
|
12
|
+
#- _dsl: input from dsl
|
13
|
+
def initialize(_dsl)
|
14
|
+
@dsl = _dsl
|
15
|
+
end
|
16
|
+
|
17
|
+
# == generate gem template
|
18
|
+
def generate
|
19
|
+
`bundle gem #{@dsl._gem_name}`
|
20
|
+
Dir.chdir(@dsl._gem_name)
|
21
|
+
FileUtils.rm_rf("./lib/#{@dsl._gem_name}.rb")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require 'generators/generators'
|
3
|
+
require 'erb'
|
4
4
|
require 'active_support/inflector'
|
5
|
-
require
|
6
|
-
require
|
5
|
+
require 'dslable_dsl'
|
6
|
+
require 'fileutils'
|
7
7
|
|
8
8
|
module Dslable::Generators::ProductCodes
|
9
9
|
class CLI
|
10
|
-
CLI_TEMPLATE
|
10
|
+
CLI_TEMPLATE = <<-EOF
|
11
11
|
#!/usr/bin/env ruby
|
12
12
|
# encoding: utf-8
|
13
13
|
|
@@ -43,11 +43,11 @@ end
|
|
43
43
|
|
44
44
|
attr_accessor :dsl
|
45
45
|
|
46
|
-
|
47
|
-
|
46
|
+
# == initialize dsl model
|
47
|
+
# === Params
|
48
48
|
#- _dsl: input from dsl
|
49
49
|
def initialize(_dsl)
|
50
|
-
|
50
|
+
fail InvalidDslError.new('dsl not allow nil') if _dsl.nil?
|
51
51
|
@dsl = _dsl
|
52
52
|
end
|
53
53
|
|
@@ -65,10 +65,10 @@ end
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def generate_cli_src(cli_src)
|
68
|
-
FileUtils.mkdir_p(
|
69
|
-
File.open("./bin/#{@dsl._bin_name}",
|
68
|
+
FileUtils.mkdir_p('./bin') unless File.exists?('./bin')
|
69
|
+
File.open("./bin/#{@dsl._bin_name}", 'w') { |f|f.puts cli_src }
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
class InvalidDslError < StandardError;end
|
73
|
+
class InvalidDslError < StandardError; end
|
74
74
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
2
|
+
require 'dslable_dsl'
|
3
|
+
require 'generators/generators'
|
4
|
+
require 'erb'
|
5
5
|
require 'active_support/inflector'
|
6
6
|
|
7
7
|
module Dslable::Generators::ProductCodes
|
8
8
|
class Core
|
9
9
|
attr_accessor :dsl
|
10
|
-
CORE_TEMPLATE
|
10
|
+
CORE_TEMPLATE = <<-END
|
11
11
|
# encoding: utf-8
|
12
12
|
require '<%=gem_name%>_dsl'
|
13
13
|
|
@@ -44,11 +44,11 @@ module <%=gem_name_camel%>
|
|
44
44
|
end
|
45
45
|
END
|
46
46
|
|
47
|
-
|
48
|
-
|
47
|
+
# == initialize core
|
48
|
+
# === Params
|
49
49
|
#- _dsl: input from dsl
|
50
50
|
def initialize(_dsl)
|
51
|
-
|
51
|
+
fail InvalidDslError.new('dls not allow nil') if _dsl.nil?
|
52
52
|
@dsl = _dsl
|
53
53
|
end
|
54
54
|
|
@@ -72,7 +72,7 @@ end
|
|
72
72
|
field_dsls << get_field_klass(field)
|
73
73
|
field_dsls << get_field_default(field) unless field._args._default_value.nil?
|
74
74
|
field_dsls << get_field_call(field)
|
75
|
-
field_dsls << [
|
75
|
+
field_dsls << ['']
|
76
76
|
field_dsls_all << field_dsls.join("\n")
|
77
77
|
end
|
78
78
|
field_dsls_all.join("\n")
|
@@ -113,11 +113,15 @@ end
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def nil_default_array
|
116
|
-
[
|
116
|
+
['your value']
|
117
117
|
end
|
118
118
|
|
119
119
|
def nil_default_hash
|
120
|
-
{
|
120
|
+
{ 'your key' => 'your value' }
|
121
|
+
end
|
122
|
+
|
123
|
+
def nil_default_boolean
|
124
|
+
false
|
121
125
|
end
|
122
126
|
|
123
127
|
def adapt_template(gem_name_camel, gem_name_upper, dsl_file_name, fields, gem_name)
|
@@ -126,9 +130,9 @@ end
|
|
126
130
|
end
|
127
131
|
|
128
132
|
def generate_core_src(core_src)
|
129
|
-
File.open("./lib/#{@dsl._gem_name}_core.rb",
|
133
|
+
File.open("./lib/#{@dsl._gem_name}_core.rb", 'w') { |f|f.puts core_src }
|
130
134
|
end
|
131
135
|
end
|
132
136
|
|
133
|
-
class InvalidDslError < StandardError;end
|
137
|
+
class InvalidDslError < StandardError; end
|
134
138
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require 'generators/generators'
|
3
|
+
require 'erb'
|
4
4
|
require 'active_support/inflector'
|
5
|
-
require
|
5
|
+
require 'dslable_dsl'
|
6
6
|
|
7
7
|
module Dslable::Generators::ProductCodes
|
8
8
|
class Dsl
|
9
|
-
DSL_TEMPLATE
|
9
|
+
DSL_TEMPLATE = <<-EOF
|
10
10
|
# encoding: utf-8
|
11
11
|
require '<%=gem_name%>_dsl_model'
|
12
12
|
|
@@ -21,7 +21,7 @@ module <%=gem_name_camel%>
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
# Array/Hash Define
|
24
|
+
# Array/Hash/Boolean Define
|
25
25
|
[<%=array_hash_fields%>].each do |f|
|
26
26
|
define_method f do |value|
|
27
27
|
eval "@<%=gem_name%>.#\{f.to_s} = #\{value}", binding
|
@@ -38,16 +38,16 @@ end
|
|
38
38
|
|
39
39
|
attr_accessor :dsl
|
40
40
|
|
41
|
-
|
42
|
-
|
41
|
+
# == initialize dsl
|
42
|
+
# === Params
|
43
43
|
#- _dsl: input from dsl
|
44
44
|
def initialize(_dsl)
|
45
|
-
|
45
|
+
fail InvalidDslError.new('dsl not allow nil') if _dsl.nil?
|
46
46
|
@dsl = _dsl
|
47
47
|
end
|
48
48
|
|
49
49
|
def generate
|
50
|
-
dsl_src = adapt_template(@dsl.camelized_gem_name, get_string_fields,
|
50
|
+
dsl_src = adapt_template(@dsl.camelized_gem_name, get_string_fields, get_other_fields, get_set_defaults)
|
51
51
|
generate_dsl_src dsl_src
|
52
52
|
end
|
53
53
|
|
@@ -57,15 +57,15 @@ end
|
|
57
57
|
@dsl.fields.each do |field|
|
58
58
|
fields << ":#{field._field_name}" if field._args._klass == String
|
59
59
|
end
|
60
|
-
fields.join(
|
60
|
+
fields.join(', ')
|
61
61
|
end
|
62
62
|
|
63
|
-
def
|
63
|
+
def get_other_fields
|
64
64
|
fields = []
|
65
65
|
@dsl.fields.each do |field|
|
66
66
|
fields << ":#{field._field_name}" unless field._args._klass == String
|
67
67
|
end
|
68
|
-
fields.join(
|
68
|
+
fields.join(', ')
|
69
69
|
end
|
70
70
|
|
71
71
|
def get_set_defaults
|
@@ -86,9 +86,9 @@ end
|
|
86
86
|
end
|
87
87
|
|
88
88
|
def generate_dsl_src(dsl_src)
|
89
|
-
File.open("./lib/#{@dsl._gem_name}_dsl.rb",
|
89
|
+
File.open("./lib/#{@dsl._gem_name}_dsl.rb", 'w') { |f|f.puts dsl_src }
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
|
-
class InvalidDslError < StandardError;end
|
93
|
+
class InvalidDslError < StandardError; end
|
94
94
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require 'generators/generators'
|
3
|
+
require 'erb'
|
4
4
|
require 'active_support/inflector'
|
5
|
-
require
|
5
|
+
require 'dslable_dsl'
|
6
6
|
|
7
7
|
module Dslable::Generators::ProductCodes
|
8
8
|
class DslModel
|
9
|
-
DSL_MODEL_TEMPLATE
|
9
|
+
DSL_MODEL_TEMPLATE = <<-EOF
|
10
10
|
# encoding: utf-8
|
11
11
|
require 'active_model'
|
12
12
|
|
@@ -21,11 +21,11 @@ end
|
|
21
21
|
|
22
22
|
attr_accessor :dsl
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
# == initialize dsl model
|
25
|
+
# === Params
|
26
26
|
#- _dsl: input from dsl
|
27
27
|
def initialize(_dsl)
|
28
|
-
|
28
|
+
fail InvalidDslError.new('dsl not allow nil') if _dsl.nil?
|
29
29
|
@dsl = _dsl
|
30
30
|
end
|
31
31
|
|
@@ -42,7 +42,7 @@ end
|
|
42
42
|
field_codes << " # #{field._desc}"
|
43
43
|
field_codes << " attr_accessor :#{field._field_name}"
|
44
44
|
field_codes << " validates :#{field._field_name}, :presence => true" if field._args._required
|
45
|
-
field_codes <<
|
45
|
+
field_codes << ''
|
46
46
|
fields << field_codes.join("\n")
|
47
47
|
end
|
48
48
|
fields.join("\n")
|
@@ -55,9 +55,9 @@ end
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def generate_dsl_model_src(dsl_model_src)
|
58
|
-
File.open("./lib/#{@dsl._gem_name}_dsl_model.rb",
|
58
|
+
File.open("./lib/#{@dsl._gem_name}_dsl_model.rb", 'w') { |f|f.puts dsl_model_src }
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
class InvalidDslError < StandardError;end
|
62
|
+
class InvalidDslError < StandardError; end
|
63
63
|
end
|
@@ -1,21 +1,21 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require
|
3
|
-
|
4
|
-
module Dslable::Generators::RSpec
|
5
|
-
# Dslable::Generators::RSpec RSpec Template Generator(only execute 'rspec --init')
|
6
|
-
class SpecTemplate
|
7
|
-
attr_accessor :dsl
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
#- _dsl: input from dsl
|
12
|
-
def initialize(_dsl)
|
13
|
-
@dsl = _dsl
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
def generate
|
18
|
-
`rspec --init`
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'generators/generators'
|
3
|
+
|
4
|
+
module Dslable::Generators::RSpec
|
5
|
+
# Dslable::Generators::RSpec RSpec Template Generator(only execute 'rspec --init')
|
6
|
+
class SpecTemplate
|
7
|
+
attr_accessor :dsl
|
8
|
+
|
9
|
+
# == initialize generate rspec template
|
10
|
+
# === Params
|
11
|
+
#- _dsl: input from dsl
|
12
|
+
def initialize(_dsl)
|
13
|
+
@dsl = _dsl
|
14
|
+
end
|
15
|
+
|
16
|
+
# == generate rspec template
|
17
|
+
def generate
|
18
|
+
`rspec --init`
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,27 +1,27 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require
|
3
|
-
|
4
|
-
module Dslable::Generators::RSpec
|
5
|
-
# Dslable::Generators::RSpec Specs Generator specs
|
6
|
-
class Specs
|
7
|
-
attr_accessor :dsl
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
#- _dsl: input from dsl
|
12
|
-
def initialize(_dsl)
|
13
|
-
@dsl = _dsl
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
def generate
|
18
|
-
generate_core
|
19
|
-
end
|
20
|
-
|
21
|
-
def generate_core
|
22
|
-
core_class_name = "#{@dsl.camelized_gem_name}::Core"
|
23
|
-
core_class_file_name = "#{@dsl._gem_name}_core"
|
24
|
-
`piccolo e #{core_class_name} #{core_class_file_name} init execute`
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'generators/generators'
|
3
|
+
|
4
|
+
module Dslable::Generators::RSpec
|
5
|
+
# Dslable::Generators::RSpec Specs Generator specs
|
6
|
+
class Specs
|
7
|
+
attr_accessor :dsl
|
8
|
+
|
9
|
+
# == initialize generate specs
|
10
|
+
# === Params
|
11
|
+
#- _dsl: input from dsl
|
12
|
+
def initialize(_dsl)
|
13
|
+
@dsl = _dsl
|
14
|
+
end
|
15
|
+
|
16
|
+
# == generate specs
|
17
|
+
def generate
|
18
|
+
generate_core
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_core
|
22
|
+
core_class_name = "#{@dsl.camelized_gem_name}::Core"
|
23
|
+
core_class_file_name = "#{@dsl._gem_name}_core"
|
24
|
+
`piccolo e #{core_class_name} #{core_class_file_name} init execute`
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require 'generators/generators'
|
3
|
+
require 'dslable_dsl'
|
4
4
|
|
5
5
|
module Dslable::Generators::Settings
|
6
6
|
class Gemfile
|
7
|
-
GEMFILE_TEMPLATE
|
7
|
+
GEMFILE_TEMPLATE = <<-EOF
|
8
8
|
source 'https://rubygems.org'
|
9
9
|
|
10
10
|
gemspec
|
@@ -18,17 +18,17 @@ gem "tudu", "~> 0.0.4"
|
|
18
18
|
|
19
19
|
attr_accessor :dsl
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
# == initialize dsl model
|
22
|
+
# === Params
|
23
23
|
#- _dsl: input from dsl
|
24
24
|
def initialize(_dsl)
|
25
|
-
|
25
|
+
fail InvalidDslError.new('dsl not allow nil') if _dsl.nil?
|
26
26
|
@dsl = _dsl
|
27
27
|
end
|
28
28
|
|
29
29
|
def generate
|
30
|
-
File.open(
|
30
|
+
File.open('./Gemfile', 'w') { |f|f.puts GEMFILE_TEMPLATE }
|
31
31
|
end
|
32
32
|
end
|
33
|
-
class InvalidDslError < StandardError;end
|
33
|
+
class InvalidDslError < StandardError; end
|
34
34
|
end
|
data/lib/generators/workflow.rb
CHANGED
@@ -1,76 +1,76 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'generators/generators'
|
3
|
-
require 'fileutils'
|
4
|
-
require 'dslable_dsl'
|
5
|
-
require 'erb'
|
6
|
-
|
7
|
-
module Dslable::Generators
|
8
|
-
# =Dslable::Generators Gem Template Generator
|
9
|
-
class Workflow
|
10
|
-
# ==todos contents
|
11
|
-
TODOS_CONTENTS = <<-EOS
|
12
|
-
implement '<%=gem_name%>_core.rb' your main logic. pass rspec all specs.
|
13
|
-
implement bin 'bin/<%=bin_name%>'.
|
14
|
-
edit '<%=gem_name%>.gemspec'.
|
15
|
-
edit 'README.md'.
|
16
|
-
edit 'LICENSE.txt'.
|
17
|
-
git add, commit.
|
18
|
-
rake install.
|
19
|
-
check gem(test using).
|
20
|
-
gem uninstall <%=gem_name%>.
|
21
|
-
rake release.
|
22
|
-
gem install <%=gem_name%>.
|
23
|
-
after release check.
|
24
|
-
EOS
|
25
|
-
|
26
|
-
# ==doings contents
|
27
|
-
DOINGS_CONTENTS = <<-EOS
|
28
|
-
implement '<%=gem_name%>_core_spec.rb'.
|
29
|
-
EOS
|
30
|
-
|
31
|
-
# ==tudu file definitions
|
32
|
-
TUDU_FILES = {
|
33
|
-
:
|
34
|
-
:
|
35
|
-
:
|
36
|
-
},
|
37
|
-
:
|
38
|
-
:
|
39
|
-
:
|
40
|
-
},
|
41
|
-
:
|
42
|
-
:
|
43
|
-
:
|
44
|
-
},
|
45
|
-
}
|
46
|
-
attr_accessor :dsl
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
#- _dsl: input from dsl
|
51
|
-
def initialize(_dsl)
|
52
|
-
|
53
|
-
@dsl = _dsl
|
54
|
-
end
|
55
|
-
|
56
|
-
|
57
|
-
def generate
|
58
|
-
Dir.mkdir('tudu')
|
59
|
-
gem_name = @dsl._gem_name
|
60
|
-
bin_name = @dsl._bin_name
|
61
|
-
TUDU_FILES.each do |key, file_definition|
|
62
|
-
File.open("./#{file_definition[:file_name]}",
|
63
|
-
f.print adapt_template(gem_name, bin_name, file_definition[:contents])
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
private
|
69
|
-
|
70
|
-
def adapt_template(gem_name, bin_name, template)
|
71
|
-
erb = ERB.new(template)
|
72
|
-
erb.result(binding)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
class InvalidDslError < StandardError;end
|
76
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'generators/generators'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'dslable_dsl'
|
5
|
+
require 'erb'
|
6
|
+
|
7
|
+
module Dslable::Generators
|
8
|
+
# =Dslable::Generators Gem Template Generator
|
9
|
+
class Workflow
|
10
|
+
# ==todos contents
|
11
|
+
TODOS_CONTENTS = <<-EOS
|
12
|
+
implement '<%=gem_name%>_core.rb' your main logic. pass rspec all specs.
|
13
|
+
implement bin 'bin/<%=bin_name%>'.
|
14
|
+
edit '<%=gem_name%>.gemspec'.
|
15
|
+
edit 'README.md'.
|
16
|
+
edit 'LICENSE.txt'.
|
17
|
+
git add, commit.
|
18
|
+
rake install.
|
19
|
+
check gem(test using).
|
20
|
+
gem uninstall <%=gem_name%>.
|
21
|
+
rake release.
|
22
|
+
gem install <%=gem_name%>.
|
23
|
+
after release check.
|
24
|
+
EOS
|
25
|
+
|
26
|
+
# ==doings contents
|
27
|
+
DOINGS_CONTENTS = <<-EOS
|
28
|
+
implement '<%=gem_name%>_core_spec.rb'.
|
29
|
+
EOS
|
30
|
+
|
31
|
+
# ==tudu file definitions
|
32
|
+
TUDU_FILES = {
|
33
|
+
todos: {
|
34
|
+
file_name: 'tudu/todos',
|
35
|
+
contents: TODOS_CONTENTS
|
36
|
+
},
|
37
|
+
doings: {
|
38
|
+
file_name: 'tudu/doings',
|
39
|
+
contents: DOINGS_CONTENTS
|
40
|
+
},
|
41
|
+
dones: {
|
42
|
+
file_name: 'tudu/dones',
|
43
|
+
contents: ''
|
44
|
+
},
|
45
|
+
}
|
46
|
+
attr_accessor :dsl
|
47
|
+
|
48
|
+
# == initialize generate gem template
|
49
|
+
# === Params
|
50
|
+
#- _dsl: input from dsl
|
51
|
+
def initialize(_dsl)
|
52
|
+
fail InvalidDslError.new('dsl not allow nil') if _dsl.nil?
|
53
|
+
@dsl = _dsl
|
54
|
+
end
|
55
|
+
|
56
|
+
# == generate gem template
|
57
|
+
def generate
|
58
|
+
Dir.mkdir('tudu')
|
59
|
+
gem_name = @dsl._gem_name
|
60
|
+
bin_name = @dsl._bin_name
|
61
|
+
TUDU_FILES.each do |key, file_definition|
|
62
|
+
File.open("./#{file_definition[:file_name]}", 'w') do |f|
|
63
|
+
f.print adapt_template(gem_name, bin_name, file_definition[:contents])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
def adapt_template(gem_name, bin_name, template)
|
71
|
+
erb = ERB.new(template)
|
72
|
+
erb.result(binding)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
class InvalidDslError < StandardError; end
|
76
|
+
end
|