Class: Bankai::Docker::File

Inherits:
Object
  • Object
show all
Includes:
DSL::Argument, DSL::Gemfile, DSL::Name, Singleton
Defined in:
lib/bankai/docker/file.rb

Overview

Docker File generator

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DSL::Gemfile

#gem?, #mysql?, #pg?

Methods included from DSL::Argument

#argument

Methods included from DSL::Name

#name

Constructor Details

#initializeFile

Returns a new instance of File.



40
41
42
# File 'lib/bankai/docker/file.rb', line 40

def initialize
  reset
end

Instance Attribute Details

#stagesObject (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

.defaultObject



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

.nameObject



15
16
17
# File 'lib/bankai/docker/file.rb', line 15

def name
  instance.name
end


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

.stagesObject



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

#resetObject



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_sObject



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