Method: Mac::User#user_present

Defined in:
lib/beaker/host/mac/user.rb

#user_present(name, &block) ⇒ Object

Makes sure the user is present, creating them if necessary

Parameters:

  • name (String)

    Name of the user

  • block (Proc)

    Additional actions or insertions



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/beaker/host/mac/user.rb', line 52

def user_present(name, &block)
  user_exists = false
  execute("dscacheutil -q user -a name #{name}") do |result|
     user_exists = result.stdout =~  /^name: #{name}/
  end

  return if user_exists

  uid = uid_next
  gid = gid_next
  create_cmd  =     "dscl . create /Users/#{name}"
  create_cmd << " && dscl . create /Users/#{name} NFSHomeDirectory /Users/#{name}"
  create_cmd << " && dscl . create /Users/#{name} UserShell /bin/bash"
  create_cmd << " && dscl . create /Users/#{name} UniqueID #{uid}"
  create_cmd << " && dscl . create /Users/#{name} PrimaryGroupID #{gid}"
  execute(create_cmd)
end