class Gzr::Commands::Attribute::SetGroupValue

Public Class Methods

new(group,attr,value,options) click to toggle source
Calls superclass method Gzr::Command::new
# File lib/gzr/commands/attribute/set_group_value.rb, line 34
def initialize(group,attr,value,options)
  super()
  @group = group
  @attr = attr
  @value = value
  @options = options
end

Public Instance Methods

execute(input: $stdin, output: $stdout) click to toggle source
# File lib/gzr/commands/attribute/set_group_value.rb, line 42
def execute(input: $stdin, output: $stdout)
  say_warning(@options) if @options[:debug]
  with_session("3.1") do

    group_id = @group if /^\d+$/.match @group
    group = nil
    if group_id
      group = query_group(group_id)
    else
      results = search_groups(@group)
      if results && results.length == 1
        group = results.first
      elsif results
        raise(Gzr::CLI::Error, "Pattern #{@group} matched more than one group")
      else
        raise(Gzr::CLI::Error, "Pattern #{@group} did not match any groups")
      end
    end

    attr_id = @attr if /^\d+$/.match @attr
    attr = nil
    if attr_id
      attr = query_user_attribute(attr_id)
    else
      attr = get_attribute_by_name(@attr)
    end
    raise(Gzr::CLI::Error, "Attribute #{@attr} does not exist") unless attr

    data = update_user_attribute_group_value(group.id,attr.id, @value)
    say_warning("Attribute #{attr.name} does not have a value set for group #{group.name}", output: output) unless data
    output.puts "Group attribute #{data.id} set to #{data.value}"
  end
end