class Sambot::Config

Constants

CONFIGURATION_FILENAME

Public Class Methods

bump_version(path = nil) click to toggle source
# File lib/sambot/config.rb, line 11
def self.bump_version(path = nil)
  path ||= File.join(Dir.getwd, CONFIGURATION_FILENAME)
  contents = File.read(path)
  version = contents.match(/version: (.+)$/)[1]
  new_version = bump(version)
  contents = contents.gsub(version, new_version)
  File.write(path, contents)
  new_version
end
new(opts) click to toggle source
# File lib/sambot/config.rb, line 21
def initialize(opts)
  @opts = opts
end
read(path = nil) click to toggle source
# File lib/sambot/config.rb, line 25
def self.read(path = nil)
  path ||= File.join(Dir.getwd, CONFIGURATION_FILENAME)
  raise ApplicationError, "The configuration file was not found at #{path}." unless File.exist?(path)
  config = YAML.load_file(path)
  raise ApplicationError, 'Missing cookbook name in the .config.yml configuration file' unless config['name']
  raise ApplicationError, 'Missing platforms in the .config.yml configuration file' unless config['platform'] || config['platforms']
  raise ApplicationError, 'Missing version in the .config.yml configuration file' unless config['version']
  raise ApplicationError, 'Missing list of suites in the .config.yml configuration file' unless config['suites']
  raise ApplicationError, 'Missing description in the .config.yml configuration file' unless config['description']
  # Dealing with legacy tech debt of allowing multiple platforms rather than a single platform
  unless config['platforms']
    unless config['platform'].is_a?(Array)
      config['platform'] = [config['platform']]
    end
    config['platforms'] = config['platform']
  end
  Config.new(config)
end

Private Class Methods

bump(version) click to toggle source
# File lib/sambot/config.rb, line 97
def self.bump(version)
  UI.debug("Old cookbook version: #{version}")
  version_info = Semantic::Version.new version
  new_version = "#{version_info.major}.#{version_info.minor}.#{version_info.patch + 1}"
  UI.debug("Old cookbook version: #{new_version}")
  new_version
end

Public Instance Methods

available_platforms() click to toggle source
# File lib/sambot/config.rb, line 48
def available_platforms
  platforms = @opts[:platforms] if @opts.key?(:platforms)
  platforms = @opts['platforms'] if @opts.key?('platforms')
  platforms
end
dependencies() click to toggle source
# File lib/sambot/config.rb, line 62
def dependencies
  items = @opts['dependencies']
  items ? items.map { |x| transform_hashes(x) } : []
end
dependencies=(value) click to toggle source
# File lib/sambot/config.rb, line 67
def dependencies=(value)
  @opts['dependencies'] = value
end
description() click to toggle source
# File lib/sambot/config.rb, line 75
def description; @opts['description']; end
forwarded_ports() click to toggle source
# File lib/sambot/config.rb, line 54
def forwarded_ports
  @opts['forwarded_ports'] || []
end
gems() click to toggle source
# File lib/sambot/config.rb, line 58
def gems
  @opts['gems'] || []
end
identifier() click to toggle source
# File lib/sambot/config.rb, line 77
def identifier; @opts['identifier']; end
is_role_cookbook?() click to toggle source
# File lib/sambot/config.rb, line 44
def is_role_cookbook?
  name.start_with?('as-role-') || name.start_with?('as-app-role-')
end
name() click to toggle source
# File lib/sambot/config.rb, line 85
def name; @opts['name']; end
runs_on_centos?() click to toggle source
# File lib/sambot/config.rb, line 87
def runs_on_centos?
  available_platforms.include?('centos')
end
runs_on_windows?() click to toggle source
# File lib/sambot/config.rb, line 91
def runs_on_windows?
  available_platforms.include?('windows')
end
secrets() click to toggle source
# File lib/sambot/config.rb, line 83
def secrets; @opts.dig('local_testing', 'secrets') || []; end
suites() click to toggle source
# File lib/sambot/config.rb, line 79
def suites; @opts['suites']; end
transform_hashes(obj) click to toggle source
# File lib/sambot/config.rb, line 71
def transform_hashes(obj)
  obj.is_a?(Hash) ? "#{obj.keys.first}', '#{obj.values.first}" : obj
end
version() click to toggle source
# File lib/sambot/config.rb, line 81
def version; @opts['version']; end