Class: Sambot::Chef::Roles
- Inherits:
-
Object
- Object
- Sambot::Chef::Roles
- Defined in:
- lib/sambot/chef/roles.rb
Constant Summary collapse
- ROLE_COOKBOOK_ORGANIZATION =
'ads-role-cookbooks'
- COOKBOOK_CONFIG =
'.config.yml'
Class Method Summary collapse
- .list_roles ⇒ Object
- .pin_cookbook_version(dependency_name, version = nil, role_name = nil) ⇒ Object
- .update_config(file, dependency, version) ⇒ Object
- .update_dependency_version(repository, dependency_name, version) ⇒ Object
Class Method Details
.list_roles ⇒ Object
26 27 28 |
# 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) ⇒ Object
12 13 14 15 16 17 18 |
# 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) ⇒ Object
30 31 32 33 34 35 36 |
# 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) ⇒ Object
20 21 22 23 24 |
# 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 |