#!/usr/bin/perl -w

=head1 NAME

    mk-starman-package-files

=head1 DESCRIPTION

    создание файлов для деплоя psgi-приложения через Ubic::Service::Starman

=cut

use strict;
use warnings;
use utf8;

use SvnRelease::MkFiles;

my $mkfiles = SvnRelease::MkFiles->new(
    files => [
        {tmpl => 'ubic_service', file => "/etc/ubic/service/[% instance %]"},

        {tmpl => 'debian_postinst', file => "/DEBIAN/postinst", perm => 0755},

        {tmpl => 'logrotate_d', file => "/etc/yandex-logrotate.d/[% instance %]", },
        {tmpl => 'cron_d', file => "/etc/cron.d/[% instance %]-logrotate", },
        {dir  => '/var/log/[% instance %]', owner => "[% user %]:[% user %]"},
        {dir  => '/var/log/[% instance %]/arc', owner => "[% user %]:[% user %]"},
    ],
    templates_fh => \*DATA,
);

my ($instance, @dummy) = $mkfiles->parse_options("instance_name");
if (@dummy || $instance !~ /^[a-z0-9_\-]+$/) {
    $mkfiles->usage("Incorrect instance name");
}

$mkfiles->{vars}->{instance} = $instance;

$mkfiles->mk();

__DATA__
<< ubic_service
use Ubic::Service::Starman;

return Ubic::Service::Starman->new({
    app => '[% app %]',
    app_name => '[% instance %]',
    port => [% port %],
    server_args => {
        workers => [% workers || 5 %],
    },
    stderr => '[% errorlog %]',
    stdout => '[% errorlog %]',
    user => '[% user %]',
});

<< debian_postinst
#!/bin/bash -e
ubic restart [% instance %]

<< cron_d
MAILTO = [% admin_email || 'root@localhost' %]

# logrotate
59 23 * * * root /usr/sbin/logrotate /etc/yandex-logrotate.d/[% instance %]

<< logrotate_d
/var/log/[% instance %]/*.log {
    daily
    dateext
    olddir arc
    rotate 10000
    missingok
    compress
    delaycompress
    notifempty
    sharedscripts
    create 0644 [% user %] [% user %]
    postrotate
    ubic try-restart [% instance %] 2>&1 > /dev/null
    endscript
}
