Class: Foobara::FilesGenerator

Inherits:
Object
  • Object
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

Constants included from TruncatedInspect

TruncatedInspect::MAX_LENGTH

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from BundlerActions

#bundle_install

Methods included from TruncatedInspect

#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
    # simplecov:disable
    super
    # simplecov:enable
  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)
  # simplecov:disable
  raise "subclass responsibility"
  # simplecov:enable
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

Returns:

  • (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

Returns:

  • (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.gsub("\n<% end %>", "<% end %>"))
  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

  # Render the template
  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(...)
  # simplecov:disable
  self.class.generators_for(...)
  # simplecov:enable
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

Returns:

  • (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
    # simplecov:disable
    raise "expected a .erb extension. Maybe override #target_path"
    # simplecov:enable
  end
end

#template_path ⇒ Object



89
90
91
92
93
# File 'src/files_generator.rb', line 89

def template_path
  # simplecov:disable
  raise "Subclass responsibility"
  # simplecov:enable
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
  # simplecov:disable
  "#{Dir.pwd}/templates"
  # simplecov:enable
end