#!/usr/bin/perl -w

=head1 NAME

    mk-dpkg-monitor-files - создание файлов для отправки нотификаций о изменениях пакетов

=head1 USAGE

    # Директовые пакеты, только почта
    mk-dpkg-monitor-files debian/yandex-direct yandex-direct \
            -d email=direct-updates@yandex-team.ru \
            -d packages_prefixes=yandex-direct \
            -d main_package=yandex-direct

    # Все пакеты, за исключением Директовых, почта + http
    mk-dpkg-monitor-files autoconf all \
        -d email=lena-san@yandex-team.ru \
        -d packages_prefixes_ignore=yandex-direct,yandex-du 
        -d url='http://direct-dev.yandex-team.ru/versionica/update'
        -d title='except Direct'

    # кажется, система с --conf не работает -- все равно устанавливается файл из главного пакета
    mk-dpkg-monitor-files debian/yandex-direct yandex-direct \
            -d email=direct-updates@yandex-team.ru \
            -d packages_prefixes=yandex-direct \
            -d main_package=yandex-direct \
            --conf test=debian/yandex-direct-conf-test -d test_email=xxx@yy.com


=head1 DESCRIPTION
    

=cut

use strict;
use warnings;

use Email::Valid;

use SvnRelease::MkFiles;

my $mkfiles = SvnRelease::MkFiles->new(
    files => [
        {tmpl => 'dpkg_monitor_config', file => "/etc/dpkg-monitor.d/[% config_name %]", conf => 1},
        ],
    templates_fh => \*DATA,
    );

my ($config_name, @dummy) = $mkfiles->parse_options("config_name");
if (@dummy) {
    $mkfiles->usage("Incorrect number of parameters");
} elsif ($config_name !~ /^[a-z0-9_\-]+$/) {
    $mkfiles->usage("Incorrect config_name");
}

if (!$mkfiles->{vars}->{email} && !$mkfiles->{vars}->{url}){
    die "no transport defined (email|url)";
}

if ( defined $mkfiles->{vars}->{email} && !Email::Valid->address($mkfiles->{vars}->{email})) {
    die "Incorrect email defined: '$mkfiles->{vars}->{email}'";
}

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

# конвертируем параметры конфигураций типа test_email -> conf_data.test.email
$mkfiles->{vars}->{email_from} ||= $mkfiles->{vars}->{email};
for my $conf (keys %{$mkfiles->confs()}) {
    my $conf_data = $mkfiles->{vars}->{conf_data}->{$conf} = {};
    $conf_data->{email} = $mkfiles->{vars}->{"${conf}_email"} || $mkfiles->{vars}->{email};
    $conf_data->{email_from} = $mkfiles->{vars}->{"${conf}_email_from"} || $conf_data->{email};
}

$mkfiles->mk();

__DATA__
<< dpkg_monitor_config
---
[% IF email || url ~%]
transport:
[% IF url %]  - http 
[% END ~%]
[% IF email %]  - email
[% END ~%]
[% END ~%]
[% IF email %]email: [% conf ? conf_data.$conf.email : email %]
email_from: [% conf ? conf_data.$conf.email_from : email_from %]
[% END %]
[% IF url %]url: '[% url %]' 
[% END ~%]
packages_prefixes: '[% packages_prefixes || '' %]'
[% IF packages_prefixes_ignore ~%]
packages_prefixes_ignore: '[% packages_prefixes_ignore %]'
[% END ~%]
main_packages: '[% main_package %]'
title: '[% title || '' %]'

