The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
# PODNAME: dancer2
# ABSTRACT: Dancer2 command line interface

use strict;
use warnings;
use Dancer2::CLI;

# backward compatibility
if (@ARGV && ($ARGV[0] =~ m/^-(a|p|x|s)/ || $ARGV[0] =~ m/^--(application|path|no-check|skel)/)) {
    # GetOptions and Getopt::Long::Descriptive differently treats
    # cases like '-a=Test'. GetOptions returs 'Test' as value of 'a',
    # while Getopt::Long::Descriptive returns '=Test' as value
    foreach (@ARGV) {
        s/^\-(a|p)=/-$1/;
    }

    unshift @ARGV, 'gen';
}


exit Dancer2::CLI->run;

__END__

=pod

=encoding UTF-8

=head1 NAME

dancer2 - Dancer2 command line interface

=head1 VERSION

version 0.204002

=head1 SYNOPSIS

dancer2 <command> [options...]

=head1 DESCRIPTION

Dancer2 is the new generation lightweight web-framework for Perl.
This tool provides nice, easily-extendable CLI interface for it.

=head2 Documentation Index

Documentation on Dancer2 is split into several manpages. Below is a
complete outline on where to go for help.

=over 4

=item * Dancer2 Tutorial

If you are new to the Dancer approach, you should start by reading
our L<Dancer2::Tutorial>.

=item * Dancer2 Manual

L<Dancer2::Manual> is the reference for Dancer2. Here you will find
information on the concepts of Dancer2 application development and
a comprehensive reference to the Dancer2 domain specific
language.

=item * Dancer2 Keywords

The keywords for Dancer2 can be found under L<DSL Keywords|Dancer2::Manual/DSL KEYWORDS>.

=item * Dancer2 Deployment

For configuration examples of different deployment solutions involving
Dancer2 and Plack, refer to L<Dancer2::Manual::Deployment>.

=item * Dancer2 Cookbook

Specific examples of code for real-life problems and some 'tricks' for
applications in Dancer can be found in L<Dancer2::Cookbook>

=item * Dancer2 Config

For configuration file details refer to L<Dancer2::Config>. It is a
complete list of all configuration options.

=item * Dancer2 Plugins

Refer to L<Dancer2::Plugins> for a partial list of available Dancer2
plugins. Note that although we try to keep this list up to date we
expect plugin authors to tell us about new modules.

=item * Dancer2 Migration guide

L<Dancer2::Manual::Migration> provides the most up-to-date instruction on
how to convert a Dancer (1) based application to Dancer2.

=back

=head1 NAME

dancer2 - Dancer2 command line interface

=head1 COMMANDS

=over

=item gen                   : create new Dancer2 application

=item commands              : list the application's commands

=item help                  : display a command's help screen

=item version               : display version

=back

To get detailed description of each individual command run:
    dancer2 help <command>

The lastest list of available commands can be dispayed by:
    dancer2 commands

=head1 COMMAND 'gen'

Helper script for providing a bootstrapping method to quickly and easily create
the framework for a new Dancer2 application.

=head3 OPTIONS

        -a --application     the name of your application
        -p --path            the path where to create your application
                             (current directory if not specified)
        -o --overwrite       overwrite existing files
        -x --no-check        don't check for the latest version of Dancer2
                             (checking version implies internet connection)
        -s --skel            skeleton directory

=head3 EXAMPLE

Here is an application created with dancer2:

    $ dancer2 gen -a MyWeb::App
    + MyWeb-App
    + MyWeb-App/bin
    + MyWeb-App/bin/app.psgi
    + MyWeb-App/config.yml
    + MyWeb-App/environments
    + MyWeb-App/environments/development.yml
    + MyWeb-App/environments/production.yml
    + MyWeb-App/views
    + MyWeb-App/views/index.tt
    + MyWeb-App/views/layouts
    + MyWeb-App/views/layouts/main.tt
    + MyWeb-App/MANIFEST.SKIP
    + MyWeb-App/lib
    + MyWeb-App/lib/MyWeb
    + MyWeb-App/lib/MyWeb/App.pm
    + MyWeb-App/public
    + MyWeb-App/public/css
    + MyWeb-App/public/css/style.css
    + MyWeb-App/public/css/error.css
    + MyWeb-App/public/images
    + MyWeb-App/public/500.html
    + MyWeb-App/public/404.html
    + MyWeb-App/public/dispatch.fcgi
    + MyWeb-App/public/dispatch.cgi
    + MyWeb-App/public/javascripts
    + MyWeb-App/public/javascripts/jquery.js
    + MyWeb-App/t
    + MyWeb-App/t/002_index_route.t
    + MyWeb-App/t/001_base.t
    + MyWeb-App/Makefile.PL

The application is ready to serve:

    $ cd MyWeb-App
    $ plackup bin/app.psgi
    >> Listening on 127.0.0.1:3000
    == Entering the development dance floor ...

=head1 AUTHOR

This script has been written by Ivan Kruglov
<ivan.kruglov@yahoo.com> base on original dancer2
script which has been written by Sebastien Deseille
<sebastien.deseille@gmail.com> and Alexis Sukrieh
<sukria@cpan.org>.

=head1 SOURCE CODE

See L<Dancer2> for more information.

=head1 LICENSE

This module is free software and is published under the same
terms as Perl itself.

=head1 AUTHOR

Dancer Core Developers

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Alexis Sukrieh.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut