class RHC::Commands::Member

Public Instance Methods

add(members) click to toggle source
# File lib/rhc/commands/member.rb, line 97
def add(members)
  target = find_domain
  role = options.role || 'edit'
  raise ArgumentError, 'You must pass one or more logins or ids to this command' unless members.present?
  say "Adding #{pluralize(members.length, role_name(role))} to #{target.class.model_name.downcase} ... "
  target.update_members(changes_for(members, role))
  success "done"

  0
end
list(path) click to toggle source
# File lib/rhc/commands/member.rb, line 49
def list(path)
  target = find_app_or_domain(path)
  members = target.members.sort_by{ |m| [m.owner? ? 0 : 1, m.role_weight, m.name] }
  show_name = members.any?{ |m| m.name && m.name != m.login }
  members.map! do |m|
    [
      ((m.name || "") if show_name),
      m.login || "",
      m.owner? ? "#{m.role} (owner)" : m.role,
      (m.id if options.ids)
    ].compact
  end
  say table(members, :header => [('Name' if show_name), 'Login', 'Role', ("ID" if options.ids)].compact)

  0
end
remove(members) click to toggle source
# File lib/rhc/commands/member.rb, line 121
def remove(members)
  target = find_domain

  if options.all
    say "Removing all members from #{target.class.model_name.downcase} ... "
    target.delete_members
    success "done"

  else
    raise ArgumentError, 'You must pass one or more logins or ids to this command' unless members.present?
    say "Removing #{pluralize(members.length, 'member')} from #{target.class.model_name.downcase} ... "
    target.update_members(changes_for(members, 'none'))
    success "done"
  end

  0
end

Protected Instance Methods

changes_for(members, role) click to toggle source
# File lib/rhc/commands/member.rb, line 140
def changes_for(members, role)
  members.map do |m|
    h = {:role => role}
    h[options.ids ? :id : :login] = m
    h
  end
end