Class: Bankai::Docker::File
- Inherits:
-
Object
- Object
- Bankai::Docker::File
- Includes:
- DSL::Argument, DSL::Gemfile, DSL::Name, Singleton
- Defined in:
- lib/bankai/docker/file.rb
Overview
Docker File generator
Instance Attribute Summary collapse
-
#stages ⇒ Object
readonly
Returns the value of attribute stages.
Class Method Summary collapse
Instance Method Summary collapse
- #detect_package(name, stage, &block) ⇒ Object
-
#initialize ⇒ File
constructor
A new instance of File.
- #main(from: nil, &block) ⇒ Object
- #package(stage, *packages, runtime: true) ⇒ Object
- #reset ⇒ Object
- #runtime_package(*packages) ⇒ Object
- #setup(&block) ⇒ Object
- #stage(name, from: nil, &block) ⇒ Object
- #to_s ⇒ Object
- #update_name(default = nil) ⇒ Object
Methods included from DSL::Gemfile
Methods included from DSL::Argument
Methods included from DSL::Name
Constructor Details
#initialize ⇒ File
Returns a new instance of File.
40 41 42 |
# File 'lib/bankai/docker/file.rb', line 40 def initialize reset end |
Instance Attribute Details
#stages ⇒ Object (readonly)
Returns the value of attribute stages.
38 39 40 |
# File 'lib/bankai/docker/file.rb', line 38 def stages @stages end |
Class Method Details
.default ⇒ Object
23 24 25 26 |
# File 'lib/bankai/docker/file.rb', line 23 def default root = Bankai::Docker::Generators::Base.default_source_root "#{root}/default.rb" end |
.name ⇒ Object
15 16 17 |
# File 'lib/bankai/docker/file.rb', line 15 def name instance.name end |
.print ⇒ Object
28 29 30 |
# File 'lib/bankai/docker/file.rb', line 28 def print instance.to_s end |
.setup(&block) ⇒ Object
10 11 12 13 |
# File 'lib/bankai/docker/file.rb', line 10 def setup(&block) instance.reset instance.setup(&block) end |
.stages ⇒ Object
19 20 21 |
# File 'lib/bankai/docker/file.rb', line 19 def stages instance.stages end |
Instance Method Details
#detect_package(name, stage, &block) ⇒ Object
74 75 76 |
# File 'lib/bankai/docker/file.rb', line 74 def detect_package(name, stage, &block) Package.register(name, stage, &block) end |
#main(from: nil, &block) ⇒ Object
60 61 62 |
# File 'lib/bankai/docker/file.rb', line 60 def main(from: nil, &block) @stages[:main] = Stage.new(:main, from: from, &block) end |
#package(stage, *packages, runtime: true) ⇒ Object
64 65 66 67 68 |
# File 'lib/bankai/docker/file.rb', line 64 def package(stage, *packages, runtime: true) Package.use(stage) do |instance| instance.add_dependency(*packages, runtime: runtime) end end |
#reset ⇒ Object
48 49 50 51 52 |
# File 'lib/bankai/docker/file.rb', line 48 def reset @name = nil @stages = {} @arguments = {} end |
#runtime_package(*packages) ⇒ Object
70 71 72 |
# File 'lib/bankai/docker/file.rb', line 70 def runtime_package(*packages) Package.instance.add_runtime_dependency(*packages) end |
#setup(&block) ⇒ Object
44 45 46 |
# File 'lib/bankai/docker/file.rb', line 44 def setup(&block) instance_eval(&block) end |
#stage(name, from: nil, &block) ⇒ Object
54 55 56 57 58 |
# File 'lib/bankai/docker/file.rb', line 54 def stage(name, from: nil, &block) name = name.to_sym @stages[name] = Stage.new(name, from: from, &block) @stages = @stages.sort_by { |_, stage| stage.index }.to_h end |
#to_s ⇒ Object
83 84 85 86 87 88 |
# File 'lib/bankai/docker/file.rb', line 83 def to_s Package.detect root = Bankai::Docker::Generators::Base.default_source_root template = ERB.new(::File.read("#{root}/dockerfile.erb"), nil, '-') template.result(binding) end |
#update_name(default = nil) ⇒ Object
78 79 80 81 |
# File 'lib/bankai/docker/file.rb', line 78 def update_name(default = nil) app_name = Rails.app_class.parent_name.demodulize.underscore.dasherize @name = @name || default || "#{`whoami`.chomp}/#{app_name}" end |