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