class UCMT::Users

Attributes

data[R]

Public Class Methods

new(data) click to toggle source
# File lib/ucmt/users.rb, line 9
def initialize(data)
  @data = data
end

Public Instance Methods

edit(options) click to toggle source
# File lib/ucmt/users.rb, line 24
def edit(options)
  name = options[:name]

  # ensure that user is not removed
  (users["remove"] || []).delete_if { |u| u["name"] == name }
  users["add"] ||= []
  user = users["add"].find { |u| u["name"] == name }
  if !user
    user = { "name" => name }
    users["add"] << user
  end

  handle_option(:fullname, user, options)
  handle_option(:uid, user, options)
  handle_option(:primary_group, user, options)
  handle_option(:shell, user, options)
  handle_option(:home, user, options)

  # TODO: PASSWORD
  # TODO: groups
end
ignore(name) click to toggle source
# File lib/ucmt/users.rb, line 13
def ignore(name)
  (users["add"] || []).delete_if { |u| u["name"] == name }
  (users["remove"] || []).delete_if { |u| u["name"] == name }
end
list() click to toggle source
# File lib/ucmt/users.rb, line 46
def list
  puts "Users to add/edit:"
  to_add = (users["add"] || []).map {|u| u["name"]}
  puts to_add.to_yaml unless to_add.empty?
  puts "\nUsers to remove:"
  to_remove = (users["remove"] || []).map {|u| u["name"]}
  puts to_remove.to_yaml unless to_remove.empty?
  puts
end
remove(name) click to toggle source
# File lib/ucmt/users.rb, line 18
def remove(name)
  (users["add"] || []).delete_if { |u| u["name"] == name }
  users["remove"] ||= []
  users["remove"] << { "name" => name }
end
show(name) click to toggle source
# File lib/ucmt/users.rb, line 56
def show(name)
  remove = (users["remove"] || []).find { |u| u["name"] == name }
  if remove
    puts "User #{name} will be removed."
    return
  end
  add = (users["add"] || []).find { |u| u["name"] == name }
  if !add
    puts "User #{name} won't be modified."
    return
  end

  puts "User #{name} will have following settings:"
  puts add.to_yaml
end

Private Instance Methods

handle_option(key, user, options) click to toggle source
# File lib/ucmt/users.rb, line 74
def handle_option(key, user, options)
  if options[:"no_#{key}"]
    user.delete(key.to_s)
  elsif options[key]
    user[key.to_s] = options[key]
  end
end
users() click to toggle source
# File lib/ucmt/users.rb, line 82
def users
  return @users if @users

  @data["local_users"] ||= {}
  @users = @data["local_users"]
end