Catalyst-Helper-InitScript-FreeBSD
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Catalyst/Helper/InitScript/FreeBSD.pm view on Meta::CPAN
our $VERSION = '0.01';
=head1 NAME
Catalyst::Helper::InitScript::FreeBSD - /usr/local/etc/rc.d/yourapp.sh generator.
=head1 SYNOPSIS
% ./script/yourapp_create.pl InitScript::FreeBSD -- --help
usage: ./script/yourapp_create.pl
-? -help display this help and exits.
-user The real uid of fastcgi process. [default is USERNAME]
-group The real gid of fastcgi process. [default is GROUP]
-p -pidfile specify filename for pid file.
[default is /var/run/yourapp.pid]
-l -listen Socket path to listen on can be HOST:PORT, :PORT or a filesystem path.
[default is /var/run/yourapp.sockets]
-n -nproc specify number of processes to keep to serve requests.
[default is 4]
-mysql run after init mysql. [default is no]
-postgresql run after init postgresql. [default is no]
% ./script/yourapp_create.pl InitScript::FreeBSD -- -nproc 2 -mysql
/usr/home/bokutin/svk/YourApp/trunk/script/../yourapp.sh.sample is exist.
overwrite? (y or n) [default n] y
/usr/home/bokutin/svk/YourApp/trunk/script/../yourapp.sh.sample was created.
The following commands were needed to complete setting up.
% sudo cp /usr/home/bokutin/svk/YourApp/trunk/script/../yourapp.sh.sample /usr/local/etc/rc.d/yourapp.sh
% sudo chmod 755 /usr/local/etc/rc.d/yourapp.sh
% sudo touch /var/run/yourapp.pid
% sudo touch /var/run/yourapp.sockets
=cut
=head2 mk_stuff
=cut
sub mk_stuff {
my ( $class, $helper, @args ) = @_;
# vars
my $vars = {
app => lc($helper->{app}) || die,
base => $helper->{base},
user => getpwuid($UID) || "",
group => getgrgid($GID) || "",
nproc => 4,
use_socket => 1,
};
$vars->{pidfile} = "/var/run/$vars->{app}.pid";
$vars->{listen} = "/var/run/$vars->{app}.sockets";
my $output = canonpath(catfile($vars->{base}, "$vars->{app}.sh.sample"));
# parse args
{
no warnings 'uninitialized';
my $opts = {};
local @ARGV = @args;
my $ret = GetOptions(
'help|?' => \$opts->{help},
'user=s' => \$opts->{user},
'group=s' => \$opts->{group},
'pidfile|p=s' => \$opts->{pidfile},
'listen|l=s' => \$opts->{listen},
'nproc|n=i' => \$opts->{nproc},
'mysql' => \$opts->{mysql},
'postgresql' => \$opts->{postgresql},
);
if (!$ret or $opts->{help}) {
$class->_usage($vars);
return 0;
}
if ($opts->{listen} =~ m/:\d+$/) {
$opts->{use_socket} = 0;
}
delete $opts->{$_} for (grep { ! length $opts->{$_} } keys %$opts);
$vars = { %$vars, %$opts };
}
# processing
if (-f $output and !$class->_ask_overwite($vars, $output)) {
print "cancelled.\n";
return 0;
}
else {
$class->_render_file($helper, $vars, $output);
my @msgs;
push @msgs, "$output was created.";
push @msgs, "";
push @msgs, "The following commands were needed to complete setting up.";
push @msgs, "% sudo cp $output /usr/local/etc/rc.d/$vars->{app}.sh";
push @msgs, "% sudo chmod 755 /usr/local/etc/rc.d/$vars->{app}.sh";
push @msgs, "% sudo touch $vars->{pidfile}";
push @msgs, "% sudo touch $vars->{listen}" if $vars->{use_socket};
print join("\n", @msgs), "\n";
}
return 1;
}
sub _usage {
my ($class, $vars) = @_;
print <<USAGE;
usage: $0
-? -help display this help and exits.
-user The real uid of fastcgi process. [default is $vars->{user}]
-group The real gid of fastcgi process. [default is $vars->{group}]
-p -pidfile specify filename for pid file.
[default is $vars->{pidfile}]
-l -listen Socket path to listen on can be HOST:PORT, :PORT or a filesystem path.
[default is $vars->{listen}]
-n -nproc specify number of processes to keep to serve requests.
[default is $vars->{nproc}]
-mysql run after init mysql. [default is no]
-postgresql run after init postgresql. [default is no]
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.860 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )