App-Sqitch
view release on metacpan or search on metacpan
lib/App/Sqitch.pm view on Meta::CPAN
package App::Sqitch;
# ABSTRACT: Sensible database change management
use 5.010;
use strict;
use warnings;
use utf8;
use Getopt::Long;
use Hash::Merge qw(merge);
use Path::Class;
use Config;
use Locale::TextDomain 1.20 qw(App-Sqitch);
use Locale::Messages qw(bind_textdomain_filter);
use App::Sqitch::X qw(hurl);
use Moo 1.002000;
use Type::Utils qw(where declare);
use App::Sqitch::Types qw(Str UserName UserEmail Maybe Config HashRef);
use Encode ();
use Try::Tiny;
use List::Util qw(first);
use IPC::System::Simple 1.17 qw(runx capturex $EXITVAL);
use namespace::autoclean 0.16;
use constant ISWIN => $^O eq 'MSWin32';
our $VERSION = 'v1.6.1'; # VERSION
BEGIN {
# Force Locale::TextDomain to encode in UTF-8 and to decode all messages.
$ENV{OUTPUT_CHARSET} = 'UTF-8';
bind_textdomain_filter 'App-Sqitch' => \&Encode::decode_utf8, Encode::FB_DEFAULT;
}
# Okay to load Sqitch classes now that types are created.
use App::Sqitch::Config;
use App::Sqitch::Command;
use App::Sqitch::Plan;
has options => (
is => 'ro',
isa => HashRef,
default => sub { {} },
);
has verbosity => (
is => 'ro',
lazy => 1,
default => sub {
my $self = shift;
$self->options->{verbosity} // $self->config->get( key => 'core.verbosity' ) // 1;
}
);
has sysuser => (
is => 'ro',
isa => Maybe[Str],
lazy => 1,
default => sub {
$ENV{ SQITCH_ORIG_SYSUSER } || do {
# Adapted from User.pm.
require Encode::Locale;
return Encode::decode( locale => getlogin )
|| Encode::decode( locale => scalar getpwuid( $< ) )
|| $ENV{ LOGNAME }
|| $ENV{ USER }
|| $ENV{ USERNAME }
|| try {
require Win32;
Encode::decode( locale => Win32::LoginName() )
};
};
},
);
has user_name => (
is => 'ro',
lazy => 1,
isa => UserName,
default => sub {
my $self = shift;
$ENV{ SQITCH_FULLNAME }
|| $self->config->get( key => 'user.name' )
|| $ENV{ SQITCH_ORIG_FULLNAME }
( run in 0.973 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )