Class: Foobara::FilesGenerator
- Inherits:
-
Object
- Object
- Foobara::FilesGenerator
show all
- Includes:
- BundlerActions, TruncatedInspect
- Defined in:
- foobara-files-generator-0.2.4/src/symlink.rb,
foobara-files-generator-0.2.4/src/files_generator.rb,
foobara-files-generator-0.2.4/src/types/generated_file.rb,
foobara-files-generator-0.2.4/src/types/generate_result.rb,
foobara-files-generator-0.2.4/src/types/generated_file_record.rb,
foobara-files-generator-0.2.4/src/files_generator/bundler_actions.rb,
foobara-files-generator-0.2.4/lib/foobara/files_generator.rb
Defined Under Namespace
Modules: BundlerActions, Types
Classes: Symlink
Constant Summary
TruncatedInspect::MAX_LENGTH
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#bundle_install
#inspect, truncating
Constructor Details
#initialize(relevant_manifest) ⇒ FilesGenerator
Returns a new instance of FilesGenerator.
34
35
36
|
# File 'src/files_generator.rb', line 34
def initialize(relevant_manifest)
self.relevant_manifest = relevant_manifest
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name) ⇒ Object
128
129
130
131
132
133
134
135
136
|
# File 'src/files_generator.rb', line 128
def method_missing(method_name, *, &)
if relevant_manifest.respond_to?(method_name)
relevant_manifest.send(method_name, *, &)
else
super
end
end
|
Instance Attribute Details
#belongs_to_dependency_group ⇒ Object
Returns the value of attribute belongs_to_dependency_group.
32
33
34
|
# File 'src/files_generator.rb', line 32
def belongs_to_dependency_group
@belongs_to_dependency_group
end
|
#relevant_manifest ⇒ Object
Returns the value of attribute relevant_manifest.
32
33
34
|
# File 'src/files_generator.rb', line 32
def relevant_manifest
@relevant_manifest
end
|
Class Method Details
.generator_for(manifest) ⇒ Object
27
28
29
|
# File 'src/files_generator.rb', line 27
def generator_for(manifest)
generators_for(manifest).first
end
|
.generators_for(manifest) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
|
# File 'src/files_generator.rb', line 15
def generators_for(manifest)
if manifest.is_a?(FilesGenerator)
return [manifest]
end
generator_classes = manifest_to_generator_classes(manifest)
Util.array(generator_classes).map do |generator_class|
generator_class.new(manifest)
end
end
|
.manifest_to_generator_classes(_manifest) ⇒ Object
9
10
11
12
13
|
# File 'src/files_generator.rb', line 9
def manifest_to_generator_classes(_manifest)
raise "subclass responsibility"
end
|
Instance Method Details
#==(other) ⇒ Object
142
143
144
|
# File 'src/files_generator.rb', line 142
def ==(other)
self.class == other.class && relevant_manifest == other.relevant_manifest
end
|
#absolute_template_path ⇒ Object
95
96
97
98
99
100
101
102
103
|
# File 'src/files_generator.rb', line 95
def absolute_template_path
path = template_path
if path.is_a?(::Array)
path = path.join("/")
end
Pathname.new("#{templates_dir}/#{path}").cleanpath.to_s
end
|
#applicable? ⇒ Boolean
54
55
56
|
# File 'src/files_generator.rb', line 54
def applicable?
true
end
|
#dependencies ⇒ Object
68
69
70
|
# File 'src/files_generator.rb', line 68
def dependencies
[]
end
|
#dependencies_to_generate ⇒ Object
72
73
74
75
76
77
78
|
# File 'src/files_generator.rb', line 72
def dependencies_to_generate
if dependencies.is_a?(::Set)
dependencies
else
Util.array(dependencies)
end
end
|
#eql?(other) ⇒ Boolean
146
147
148
|
# File 'src/files_generator.rb', line 146
def eql?(other)
self == other
end
|
#erb_template ⇒ Object
115
116
117
118
119
120
|
# File 'src/files_generator.rb', line 115
def erb_template
erb = ERB.new(template_string)
erb.filename = absolute_template_path
erb
end
|
#generate(elements_to_generate) ⇒ Object
80
81
82
83
84
85
86
87
|
# File 'src/files_generator.rb', line 80
def generate(elements_to_generate)
dependencies_to_generate.each do |dependency|
elements_to_generate << dependency
end
erb_template.result(binding)
end
|
#generator_for ⇒ Object
64
65
66
|
# File 'src/files_generator.rb', line 64
def generator_for(...)
self.class.generator_for(...)
end
|
#generators_for ⇒ Object
58
59
60
61
62
|
# File 'src/files_generator.rb', line 58
def generators_for(...)
self.class.generators_for(...)
end
|
#hash ⇒ Object
150
151
152
|
# File 'src/files_generator.rb', line 150
def hash
relevant_manifest.hash
end
|
#path_to_root ⇒ Object
122
123
124
125
126
|
# File 'src/files_generator.rb', line 122
def path_to_root
size = target_path.size - 1
(["../"] * size).join
end
|
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
138
139
140
|
# File 'src/files_generator.rb', line 138
def respond_to_missing?(method_name, include_private = false)
relevant_manifest.respond_to?(method_name, include_private)
end
|
#target_dir ⇒ Object
50
51
52
|
# File 'src/files_generator.rb', line 50
def target_dir
target_path[0..-2]
end
|
#target_path ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
|
# File 'src/files_generator.rb', line 38
def target_path
*path, file = template_path
if file.end_with?(".erb")
[*path, file[0..-5]]
else
raise "expected a .erb extension. Maybe override #target_path"
end
end
|
#template_path ⇒ Object
89
90
91
92
93
|
# File 'src/files_generator.rb', line 89
def template_path
raise "Subclass responsibility"
end
|
#template_string ⇒ Object
111
112
113
|
# File 'src/files_generator.rb', line 111
def template_string
File.read(absolute_template_path)
end
|
#templates_dir ⇒ Object
105
106
107
108
109
|
# File 'src/files_generator.rb', line 105
def templates_dir
"#{Dir.pwd}/templates"
end
|