NAME

App::Spec::Argument - App::Spec objects representing command line options or parameters

SYNOPSIS

EXAMPLES

Options can be defined in a verbose way via key value pairs, but you can also use a shorter syntax.

The idea comes from Ingy's http://www.schematype.org/.

The first item of the string is the name of the option using a syntax very similar to the one from Getopt::Long.

Then you can optionally define a type, a default value and a summary.

You can see a list of supported syntax in this example from t/data/12.dsl.yaml:

---
# version with short dsl syntax
name: myapp
appspec: { version: 0.001 }
class: App::Spec::Example::MyApp
title: My Very Cool App
options:
  - spec: foo                 --Foo
  - spec: verbose|v+          --be verbose
  - spec: +req                --Some required flag
  - spec: number=i            --integer option
  - spec: number2|n= +integer --integer option
  - spec: fnumber=f           --float option
  - spec: fnumber2|f= +float  --float option
  - spec: date|d=s =today
  - spec: items=s@            --multi option
  - spec: set=s%              --multiple key=value pairs

---
# version with verbose syntax
name: myapp
appspec: { version: 0.001 }
class: App::Spec::Example::MyApp
title: My Very Cool App
options:
  - name: foo
    type: flag
    summary: Foo
  - name: verbose
    summary: be verbose
    type: flag
    multiple: true
    aliases: ["v"]
  - name: req
    summary: Some required flag
    required: true
    type: flag
  - name: number
    summary: integer option
    type: integer
  - name: number2
    summary: integer option
    type: integer
    aliases: ["n"]
  - name: fnumber
    summary: float option
    type: float
  - name: fnumber2
    summary: float option
    type: float
    aliases: ["f"]
  - name: date
    type: string
    default: today
    aliases: ["d"]
  - name: items
    type: string
    multiple: true
    summary: multi option
  - name: set
    type: string
    multiple: true
    mapping: true
    summary: multiple key=value pairs

METHODS

common

Builds a hash with the given hashref and fills in some defaults.

my %hash = $class->common($args);
from_dsl

Builds a hash from the dsl string

%dsl = $class->from_dsl("verbose|v+ --Be verbose");
name, type, multiple, required, unique, summary, description, default, completion, enum, values, mapping

Attributes which represent the ones from the spec.