def option(short, long, desc,
               argument: :forbidden,
               multiple: false,
               hidden: false,
               default: nil,
               transform: nil,
               &block)
      @command.option_definitions << Cri::OptionDefinition.new(
        short: short&.to_s,
        long: long&.to_s,
        desc: desc,
        argument: argument,
        multiple: multiple,
        hidden: hidden,
        default: default,
        transform: transform,
        block: block,
      )
    end
def option(short, long, desc,
               argument: :forbidden,
               multiple: false,
               hidden: false,
               default: nil,
               transform: nil,
               &block)
      @command.option_definitions << Cri::OptionDefinition.new(
        short: short&.to_s,
        long: long&.to_s,
        desc: desc,
        argument: argument,
        multiple: multiple,
        hidden: hidden,
        default: default,
        transform: transform,
        block: block,
      )
    end
Adds a new option to the command. If a block is given, it will be
 executed when the option is successfully parsed.

 @param [String, Symbol, nil] short The short option name

 @param [String, Symbol, nil] long The long option name

 @param [String] desc The option description

 @option params [:forbidden, :required, :optional] :argument Whether the
   argument is forbidden, required or optional

 @option params [Boolean] :multiple Whether or not the option should
   be multi-valued

 @option params [Boolean] :hidden Whether or not the option should
   be printed in the help output

 @return [void]