Class: Vx::Builder::BuildConfiguration

Inherits:
Object
  • Object
show all
Defined in:
lib/vx/builder/build_configuration.rb,
lib/vx/builder/build_configuration/env.rb,
lib/vx/builder/build_configuration/cache.rb,
lib/vx/builder/build_configuration/deploy.rb,
lib/vx/builder/build_configuration/deploy/base.rb,
lib/vx/builder/build_configuration/deploy/shell.rb

Defined Under Namespace

Classes: Cache, Deploy, Env

Constant Summary collapse

ATTRIBUTES =
%w{
  rvm
  scala
  jdk
  language

  gemfile
  services
  image
  bundler_args

  before_install
  before_script
  script
  after_success

  before_deploy
  after_deploy
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(new_attributes = {}, matrix_attributes = {}) ⇒ BuildConfiguration



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/vx/builder/build_configuration.rb', line 46

def initialize(new_attributes = {}, matrix_attributes = {})
  new_attributes = {} unless new_attributes.is_a?(Hash)

  @env            = Env.new       new_attributes.delete("env")
  @cache          = Cache.new     new_attributes.delete("cache")
  @deploy         = Deploy.new    new_attributes.delete("deploy")
  @deploy_modules = new_attributes.delete("deploy_modules") || []
  @deploy_modules = Deploy.restore_modules(@deploy_modules)

  @matrix_attributes = matrix_attributes

  build_attributes new_attributes
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



44
45
46
# File 'lib/vx/builder/build_configuration.rb', line 44

def attributes
  @attributes
end

#cacheObject (readonly)

Returns the value of attribute cache.



44
45
46
# File 'lib/vx/builder/build_configuration.rb', line 44

def cache
  @cache
end

#deployObject (readonly)

Returns the value of attribute deploy.



44
45
46
# File 'lib/vx/builder/build_configuration.rb', line 44

def deploy
  @deploy
end

#deploy_modulesObject (readonly)

Returns the value of attribute deploy_modules.



44
45
46
# File 'lib/vx/builder/build_configuration.rb', line 44

def deploy_modules
  @deploy_modules
end

#envObject (readonly)

Returns the value of attribute env.



44
45
46
# File 'lib/vx/builder/build_configuration.rb', line 44

def env
  @env
end

Class Method Details

.from_file(file) ⇒ Object



37
38
39
40
41
# File 'lib/vx/builder/build_configuration.rb', line 37

def from_file(file)
  if File.readable? file
    from_yaml File.read(file)
  end
end

.from_yaml(yaml) ⇒ Object



32
33
34
35
# File 'lib/vx/builder/build_configuration.rb', line 32

def from_yaml(yaml)
  hash = YAML.load(yaml)
  new hash
end

Instance Method Details

#cached_directoriesObject



107
108
109
# File 'lib/vx/builder/build_configuration.rb', line 107

def cached_directories
  cache.enabled? and cache.directories
end

#deploy?Boolean



73
74
75
# File 'lib/vx/builder/build_configuration.rb', line 73

def deploy?
  deploy.attributes.any?
end

#deploy_modules?Boolean



77
78
79
# File 'lib/vx/builder/build_configuration.rb', line 77

def deploy_modules?
  deploy_modules.any?
end

#env_matrixObject



99
100
101
# File 'lib/vx/builder/build_configuration.rb', line 99

def env_matrix
  env.matrix
end

#languageObject



103
104
105
# File 'lib/vx/builder/build_configuration.rb', line 103

def language
  @attributes["language"].first
end

#matrix_attributesObject



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/vx/builder/build_configuration.rb', line 60

def matrix_attributes
  @matrix_attributes.inject({}) do |a,pair|
    k,v = pair
    if k == 'env'
      v = v["matrix"].first
    end
    if v
      a[k] = v
    end
    a
  end
end

#matrix_idObject

for tests



82
83
84
# File 'lib/vx/builder/build_configuration.rb', line 82

def matrix_id
  matrix_attributes.to_a.map{|i| i.join(":") }.sort.join(", ")
end

#to_hashObject



86
87
88
89
90
91
92
93
# File 'lib/vx/builder/build_configuration.rb', line 86

def to_hash
  attributes.merge(
    "env"            => env.attributes,
    "cache"          => cache.attributes,
    "deploy"         => deploy.attributes,
    "deploy_modules" => deploy_modules.map(&:to_hash)
  )
end

#to_yamlObject



95
96
97
# File 'lib/vx/builder/build_configuration.rb', line 95

def to_yaml
  to_hash.to_yaml
end