App-Padadoy
view release on metacpan or search on metacpan
lib/App/Padadoy.pm view on Meta::CPAN
use strict;
use warnings;
package App::Padadoy;
{
$App::Padadoy::VERSION = '0.125';
}
#ABSTRACT: Simply deploy PSGI applications
use 5.010;
use autodie;
use Try::Tiny;
use IPC::System::Simple qw(run capture $EXITVAL);
use File::Slurp;
use List::Util qw(max);
use File::ShareDir qw(dist_file);
use File::Path qw(make_path);
use File::Basename qw(dirname);
use File::Spec::Functions qw(catdir catfile rel2abs);
use Git::Repository;
use Sys::Hostname;
use YAML::Any qw(LoadFile Dump);
use Cwd;
# required for deployment
use Plack::Handler::Starman qw();
use Carton qw(0.9.4);
# required for testing
use Plack::Test qw();
use HTTP::Request::Common qw();
our @commands = qw(init start stop restart config status create checkout
deplist cartontest remote version update enable logs);
our @remote_commands = qw(init start stop restart config status version); # TODO: create deplist checkout cartontest
our @configs = qw(user base repository port pidfile quiet remote);
# _msg( $fh, [\$caller], $msg [@args] )
sub _msg (@) {
my $fh = shift;
my $caller = ref($_[0]) ? ${(shift)} :
((caller(2))[3] =~ /^App::Padadoy::(.+)/ ? $1 : '');
my $text = shift;
say $fh (($caller ? "[$caller] " : "")
. (@_ ? sprintf($text, @_) : $text));
}
sub fail (@) {
_msg(*STDERR, @_);
exit 1;
}
sub msg {
my $self = shift;
_msg( *STDOUT, @_ ) unless $self->{quiet};
}
sub new {
my ($class, $config, %values) = @_;
my $self = bless { }, $class;
my $yaml = { };
if ($config) {
# $self->msg("Reading configuration from $config");
try {
$yaml = LoadFile( $config );
} catch {
fail $_;
};
$self->{base} = rel2abs(dirname($config));
( run in 1.507 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )