32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/chef/knife/role_bulk_delete.rb', line 32
def run
if @name_args.length < 1
ui.error("You must supply a regular expression to match the results against")
exit 1
end
all_roles = Chef::Role.list(true)
matcher = /#{@name_args[0]}/
roles_to_delete = {}
all_roles.each do |name, role|
next unless name&.match?(matcher)
roles_to_delete[role.name] = role
end
if roles_to_delete.empty?
ui.info "No roles match the expression /#{@name_args[0]}/"
exit 0
end
ui.msg("The following roles will be deleted:")
ui.msg("")
ui.msg(ui.list(roles_to_delete.keys.sort, :columns_down))
ui.msg("")
ui.confirm("Are you sure you want to delete these roles")
roles_to_delete.sort.each do |name, role|
role.destroy
ui.msg("Deleted role #{name}")
end
end
|