#!/usr/bin/perl -w
use strict;
use Specgen::utils;
use Specgen::spec;

sub spec_load($) {
    my $name = shift;
    my $t    = readfile($name);
    $name =~ s/^(.*\/)?specs\///;
    $name =~ s/\//-/g;
    $name =~ s/\.spec$//;
    my $spec = parse_spec($t);
    $spec->{name} = $name unless defined $spec->{name};
    $spec->{text} =~ s/\s+$//s;
    return $spec;
}

my @specs;
my $main;

sub read_specs($);

sub read_specs($) {
    my $dir = shift;
	my @dirs;
    foreach my $name ( glob("$dir/*") ) {
        if ( -d $name ) {
			push @dirs, $name;
            next;
        }
        next unless $name =~ /\.spec$/;
        my $spec = spec_load($name);
        $spec->{description}->{default} =~ s/%summary/$spec->{summary}/;
        if ( defined $spec->{sections}->{changelog} ) {
            $main = $spec;
        }
        else {
            push @specs, $spec;
        }
    }

	read_specs($_)	foreach @dirs;
}

read_specs("specs");

foreach my $spec (@specs) {
    spec_body_rewrite($spec);
    $spec->{group} = $main->{group} unless defined $spec->{group};
    add_subpackage( $main, $spec );
}

file_write( $main->{name} . ".spec", dump_spec($main) );

