package Dancer::GetOpt; use strict; use warnings; use Dancer::Config 'setting'; use Getopt::Long; use FindBin; use File::Spec; my $options = { port => setting('port'), daemon => setting('daemon'), confdir => setting('confdir') || setting('appdir'), environment => 'development', }; sub arg_to_setting { my ($option, $value) = @_; setting($option => $value); } sub process_args { my $help = 0; GetOptions( 'help' => \$help, 'port=i' => sub { arg_to_setting(@_) }, 'daemon' => sub { arg_to_setting(@_) }, 'environment=s' => sub { arg_to_setting(@_) }, 'confdir=s' => sub { arg_to_setting(@_) }, 'restart=s' => sub { arg_to_setting( auto_reload => $_[1] ) }, ) || usage_and_exit(); usage_and_exit() if $help; } sub usage_and_exit { print_usage() && exit(0) } sub print_usage { my $app = File::Spec->catfile( $FindBin::RealBin, $FindBin::RealScript ); print < setting. Useful when you want to switch this setting for a test without changing the value in your configurations file. EOF } 'Dancer::GetOpt';