Class: Boxing::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/boxing/context.rb

Overview

The template context

Since:

  • 0.1.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, database, dependencies = []) ⇒ Context

Returns a new instance of Context.

Parameters:

Since:

  • 0.1.0



16
17
18
19
20
21
22
# File 'lib/boxing/context.rb', line 16

def initialize(config, database, dependencies = [])
  @config = config
  @database = database
  @dependencies = dependencies

  @config.port = 3000 if has?('rails')
end

Instance Attribute Details

#configObject (readonly)

Since:

  • 0.5.0



9
10
11
# File 'lib/boxing/context.rb', line 9

def config
  @config
end

Instance Method Details

#default_packagesArray<Boxing::Package>

Default packages

Returns:

Since:

  • 0.4.0



65
66
67
68
69
70
71
72
# File 'lib/boxing/context.rb', line 65

def default_packages
  [
    Package.new('build-base', mode: Package::BUILD)
  ]
    .push(git? ? Package.new('git', mode: Package::BUILD) : nil)
    .push(has?('liveness') ? Package.new('curl', mode: Package::RUNTIME) : nil)
    .compact
end

#extra_packagesArray<Boxing::Package>

Extra Packages

Returns:

Since:

  • 0.6.0



79
80
81
82
83
84
85
86
# File 'lib/boxing/context.rb', line 79

def extra_packages
  Array[config.build_packages, config.runtime_packages].compact.flat_map do |name|
    mode = 0
    mode |= Package::BUILD if config.build_packages&.include?(name)
    mode |= Package::RUNTIME if config.runtime_packages&.include?(name)
    Package.new(name, mode: mode)
  end
end

#git?TrueClass|FalseClass

Does any gem from git

Returns:

  • (TrueClass|FalseClass)

Since:

  • 0.4.0



56
57
58
# File 'lib/boxing/context.rb', line 56

def git?
  @dependencies.any?(&:git)
end

#has?(*names) ⇒ TrueClass|FalseClass

Check rubygems exists

Parameters:

  • names (Array<String>)

Returns:

  • (TrueClass|FalseClass)

Since:

  • 0.1.0



47
48
49
# File 'lib/boxing/context.rb', line 47

def has?(*names)
  @dependencies.any? { |dep| names.include?(dep.name) }
end

#node_versionString

Return node.js version

Returns:

  • (String)

Since:

  • 0.6.0



93
94
95
96
97
# File 'lib/boxing/context.rb', line 93

def node_version
  return config.node_version if config.node_version

  `node -v`.gsub(/^v/, '')
end

#packagesSet<Boxing::Package>

Return required packages

Returns:

Since:

  • 0.1.0



29
30
31
32
33
34
35
36
37
38
# File 'lib/boxing/context.rb', line 29

def packages
  @packages ||=
    Set
    .new(default_packages + extra_packages)
    .merge(
      @dependencies
      .map(&:name)
      .flat_map { |name| @database.package_for(name).to_a }
    )
end

#to_bindingBinding

Convert to binding

Returns:

  • (Binding)

Since:

  • 0.1.0



104
105
106
# File 'lib/boxing/context.rb', line 104

def to_binding
  binding
end