class Gzr::Commands::Attribute::Rm

Public Class Methods

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

Public Instance Methods

execute(input: $stdin, output: $stdout) click to toggle source
# File lib/gzr/commands/attribute/rm.rb, line 38
def execute(input: $stdin, output: $stdout)
  say_warning(@options) if @options[:debug]
  with_session do
    id = @attr if /^\d+$/.match @attr
    attr = nil
    if id
      attr = query_user_attribute(id)
    else
      attr = get_attribute_by_name(@attr)
    end

    raise(Gzr::CLI::Error, "Attribute #{@attr} does not exist") unless attr
    raise(Gzr::CLI::Error, "Attribute #{attr[:name]} is a system built-in and cannot be deleted ") if attr[:is_system]
    raise(Gzr::CLI::Error, "Attribute #{attr[:name]} is marked permanent and cannot be deleted ") if attr[:is_permanent]

    delete_user_attribute(attr.id)

    output.puts "Deleted attribute #{attr.name} #{attr.id}" unless @options[:plain] 
    output.puts attr.id if @options[:plain] 
  end
end