Module: Mac::Group
Instance Attribute Summary
Attributes included from Beaker::CommandFactory
Instance Method Summary collapse
-
#gid_next ⇒ Fixnum
Gives the next gid not used on the system.
-
#group_absent(name, &block) ⇒ Object
Makes sure the group is absent, deleting it if necessary.
-
#group_get(name) {|String| ... } ⇒ String
Gets the group information in /etc/group format.
-
#group_gid(name) ⇒ String
Gets the gid of the given group.
-
#group_list ⇒ Array<String>
Gets a list of group names on the system.
-
#group_present(name) ⇒ Object
Makes sure the group is present, creating it if necessary.
Methods included from Beaker::CommandFactory
Instance Method Details
#gid_next ⇒ Fixnum
Gives the next gid not used on the system
93 94 95 96 |
# File 'lib/beaker/host/mac/group.rb', line 93 def gid_next gid_last = execute("dscl . -list /Groups PrimaryGroupID | sort -k 2 -g | tail -1 | awk '{print $2}'") gid_last.to_i + 1 end |
#group_absent(name, &block) ⇒ Object
Makes sure the group is absent, deleting it if necessary
86 87 88 |
# File 'lib/beaker/host/mac/group.rb', line 86 def group_absent(name, &block) execute("if dscl . -list /Groups/#{name}; then dscl . -delete /Groups/#{name}; fi", {}, &block) end |
#group_get(name) {|String| ... } ⇒ String
Gets the group information in /etc/group format
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/beaker/host/mac/group.rb', line 31 def group_get(name) execute("dscacheutil -q group -a name #{name}") do |result| fail_test "failed to get group #{name}" unless /^name: #{name}/.match?(result.stdout) gi = {} # group info result.stdout.each_line do |line| pieces = line.split(': ') gi[pieces[0].to_sym] = pieces[1].strip if pieces[1] != nil end answer = "#{gi[:name]}:#{gi[:password]}:#{gi[:gid]}" yield answer if block_given? answer end end |
#group_gid(name) ⇒ String
Gets the gid of the given group
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/beaker/host/mac/group.rb', line 51 def group_gid(name) gid = -1 execute("dscacheutil -q group -a name #{name}") do |result| result.stdout.each_line do |line| if /^gid:/.match?(line) gid = (line[5, line.length - 5]).chomp break end end gid end end |
#group_list ⇒ Array<String>
Gets a list of group names on the system
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/beaker/host/mac/group.rb', line 9 def group_list execute('dscacheutil -q group') do |result| groups = [] result.stdout.each_line do |line| groups << line.split(': ')[1].strip if /^name:/.match?(line) end yield result if block_given? groups end end |
#group_present(name) ⇒ Object
Makes sure the group is present, creating it if necessary
68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/beaker/host/mac/group.rb', line 68 def group_present(name) group_exists = false execute("dscacheutil -q group -a name #{name}") do |result| group_exists = result.stdout.start_with?("name: #{name}") end return if group_exists gid = gid_next create_cmd = "dscl . create /Groups/#{name}" create_cmd << " && dscl . create /Groups/#{name} PrimaryGroupID #{gid}" execute(create_cmd) end |