# File lib/slop.rb, line 563
  def command(label, options={}, &block)
    if @commands.key?(label)
      raise ArgumentError, "command `#{label}` already exists"
    end

    slop = Slop.new @sloptions.merge(options)
    slop.aliases = Array(options.delete(:aliases) || options.delete(:alias))
    @commands[label] = slop

    slop.aliases.each { |a| @commands[a] = @commands[label] }

    if block_given?
      block.arity == 1 ? yield(slop) : slop.instance_eval(&block)
    end

    slop
  end