class Wright::Provider::User::DarwinDirectoryService

Darwin DirectoryService user provider. Used as a provider for {Resource::User} on OS X systems.

Private Instance Methods

create_user() click to toggle source
# File lib/wright/provider/user/darwin_directory_service.rb, line 12
def create_user
  attributes = default_attributes.merge(resource_attributes)
  attributes.each do |k, v|
    args = dscl_args(:create, k, v)
    exec_or_fail('dscl', args, "cannot create user '#{user_name}'")
  end
end
default_attributes() click to toggle source
# File lib/wright/provider/user/darwin_directory_service.rb, line 37
def default_attributes
  uid_range = system_user? ? 1...500 : 500...1000
  {
    'UniqueID' => Wright::Util::User.next_free_uid(uid_range),
    'UserShell' => '/bin/bash',
    'RealName' => '',
    'NFSHomeDirectory' => "/Users/#{user_name}",
    'PrimaryGroupID' => Wright::Util::User.group_to_gid('staff'),
    'Password' => '*'
  }
end
dscl_args(cmd, key, value) click to toggle source
# File lib/wright/provider/user/darwin_directory_service.rb, line 33
def dscl_args(cmd, key, value)
  %W(. -#{cmd} /Users/#{user_name} #{key} #{value})
end
remove_user() click to toggle source
# File lib/wright/provider/user/darwin_directory_service.rb, line 27
def remove_user
  exec_or_fail('dscl',
               %W(. -delete /Users/#{user_name}),
               "cannot remove user '#{user_name}'")
end
resource_attributes() click to toggle source
# File lib/wright/provider/user/darwin_directory_service.rb, line 49
def resource_attributes
  gid = Wright::Util::User.group_to_gid(primary_group)
  {
    'UniqueID' => uid,
    'UserShell' => shell,
    'RealName' => full_name,
    'NFSHomeDirectory' => home,
    'PrimaryGroupID' => gid
  }.reject { |_k, v| v.nil? }
end
update_user() click to toggle source
# File lib/wright/provider/user/darwin_directory_service.rb, line 20
def update_user
  resource_attributes.each do |k, v|
    args = dscl_args(:create, k, v)
    exec_or_fail('dscl', args, "cannot create user '#{user_name}'")
  end
end