class Sambot::Chef::Roles

Constants

COOKBOOK_CONFIG
ROLE_COOKBOOK_ORGANIZATION

Public Class Methods

list_roles() click to toggle source
# File lib/sambot/chef/roles.rb, line 26
def list_roles
  SourceControl.list_organization_repositories(ROLE_COOKBOOK_ORGANIZATION)
end
pin_cookbook_version(dependency_name, version = nil, role_name = nil) click to toggle source
# File lib/sambot/chef/roles.rb, line 12
def pin_cookbook_version(dependency_name, version = nil, role_name = nil)
  raise 'No dependency name provided' unless dependency_name
  roles = role_name ? [role_name] : list_roles
  roles.each do |role|
    update_dependency_version(repository, dependency_name, version)
  end
end
update_config(file, dependency, version) click to toggle source
# File lib/sambot/chef/roles.rb, line 30
def update_config(file, dependency, version)
  body = Base64.decode64(file.content)
  new_contents = body.lines.map do |line|
    line.match(/^\s*- #{dependency}/) ? update_line(line, dependency, version) : line
  end.join
  new_contents == body.lines.join ? nil : new_contents
end
update_dependency_version(repository, dependency_name, version) click to toggle source
# File lib/sambot/chef/roles.rb, line 20
def update_dependency_version(repository, dependency_name, version)
  file = SourceControl.get_file(ROLE_COOKBOOK_ORGANIZATION, repository, COOKBOOK_CONFIG)
  config = update_config(file, dependency_name, version)
  config ? apply_changes(config, repository, file) : false
end

Private Class Methods

apply_changes(contents, repository, file) click to toggle source
# File lib/sambot/chef/roles.rb, line 44
def apply_changes(contents, repository, file)
  puts 'Not stubbed'
  raise 'error'
  msg = "Updated cookbook dependency #{dependency_name} to #{version}"
  SourceControl.edit_file(ROLE_COOKBOOK_ORGANIZATION, repository, COOKBOOK_CONFIG, contents, file, msg)
  return true
end
update_line(val, dependency, version) click to toggle source
# File lib/sambot/chef/roles.rb, line 40
def update_line(val, dependency, version)
  val
end