NAME
CLI::Driver - Drive your cli tool with YAML
SYNOPSIS
use CLI::Driver;
 
my $cli = CLI::Driver->new;
$cli->run;
- or - 
 
my $cli = CLI::Driver->new(
    path => './etc:/etc',
    file => 'myconfig.yml'
);
$cli->run;
  
- or - 
my $cli = CLI::Driver->new(
    use_file_sharedir => 1,
    file_sharedir_dist_name => 'CLI-Driver',
);
$cli->run;
                     
#################################
# cli-driver.yml example
################################# 
do-something:
  desc: "Action description"
  deprecated:
    status: false
    replaced-by: na
  class:
    name: My::App
    attr:
      required:
        hard:
          f: foo
        soft:
          h: home
          a: '@array_arg'
      optional:
      flags:
        dry-run: dry_run_flag
  method:
    name: my_method
    args:
      required: 
        hard: 
        soft:
      optional:
      flags:
  help:
   args:
      f: "Additional help info for argument 'f'"
   examples:
      - "-f foo -a val1 -a val2 --dry-run"
        
ATTRIBUTES
path
Directory where your cli-driver.yml file is located. You can specify multiple directories by separating them with ':'. For example, "etc:/etc".
isa: Str
defaults: .:etc:/etc
file
Name of your YAML driver file.
isa: Str
default: cli-driver.yml
use_file_sharedir
Flag indicating you want to use File::ShareDir to locate the driver file. Requires the attribute 'file_sharedir_dist_name' to be provided. Is mutually exclusive with the 'path' attribute.
isa: Bool
default: 0
file_sharedir_dist_name
Your distro name. For example: 'CLI-Driver'.
isa: Str
default: undef
argv_map
A set of command line overrides for retrieving arguments. This can be used in-place of @ARGV args.
Example:
{
   classAttrName1 => 'abc',
   classAttrName2 => 'def',
   methodArgName1	=> 'ghi'
}
isa: HashRef
default: undef
actions
A list of actions parsed from the driver file.
isa: ArrayRef[CLI::Driver::Action]