#!/usr/pkg/bin/perl
# vim: ts=4:sw=4:et:ai:sts=4
#
# KGB - an IRC bot helping collaboration
# Copyright © 2012 Damyan Ivanov
# Copyright © 2012 gregor herrmann
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 51
# Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

use strict;
use warnings;
use 5.010;
use autodie;

use YAML qw(LoadFile DumpFile);
use File::Spec;

no warnings 'once';
local $YAML::SortKeys = [qw(repositories channels)];
use warnings;

my $file = '/usr/pkg/etc/kgb-bot/kgb.conf';
my $dir  = '/usr/pkg/etc/kgb-bot/kgb.conf.d';

my $yaml = LoadFile($file);

foreach my $repo ( keys %{ $yaml->{repositories} } ) {
    my $splitconfig = {};
    $splitconfig->{repositories}->{$repo} = $yaml->{repositories}->{$repo};
    foreach my $channel ( @{ $yaml->{channels} } ) {
        push @{ $splitconfig->{channels} }, $channel
            if grep { $_ eq $repo } @{ $channel->{repos} };
    }
    my $outfile = File::Spec->catdir( $dir, "$repo.conf" );
    DumpFile( $outfile, $splitconfig );
}

__END__

=head1 NAME

kgb-split-config - helper script for splitting out project configurations

=head1 SYNOPSIS

B<kgb-split-config>

=head1 DESCRIPTION

B<kgb-split-config> extracts project configurations from F</usr/pkg/etc/kgb-bot/kgb.conf> and
dumps them as separate files into F</usr/pkg/etc/kgb-bot/kgb.conf.d/>.

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2012 Damyan Ivanov
Copyright (C) 2012 gregor herrmann

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
details.

You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 51
Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

=cut
