#!/usr/bin/perl -w

use strict;
use warnings;
use DBI;
use File::Basename;

my $dbh;
my $sth_insert_files;
my $sth_insert_category;
my $sth_insert_mimetype;
my $sth_max;

my $pkgkey=$ENV{'REPOCOP_PKG_KEY'};

#exit if $ENV{'REPOCOP_PKG_NAME'} =~ m/^repocop-demo-menu/;

exit 0 unless -d $ENV{'REPOCOP_PKG_ROOT'}.'/etc/buildreqs/packages/substitute.d';

&connect();

foreach my $filename(glob $ENV{'REPOCOP_PKG_ROOT'}."/etc/buildreqs/packages/substitute.d/*") {
    open my $fh, $filename or die "freedesktop_desktop.test: $filename: $!";
    my $substname;
    while (<$fh>) {
	chomp;
	s/\s+$//;
	$substname=$_ if $_;
    }
    close $fh;
    my $realname=basename($filename);
    $filename=~s/^$ENV{'REPOCOP_PKG_ROOT'}//;
    if (!$substname) {
	system('repocop-test-warn', "bad content in $filename");
    } elsif ($realname eq $substname) {
	system('repocop-test-warn', "substitution $realname -> $substname in $filename makes no sense");
    } else {
	$sth_insert_files->execute($pkgkey,$realname,$substname);
    }
}

&disconnect();

sub connect {
    my $dbfile=$ENV{'REPOCOP_TEST_DB'};
    die "database is not initialized properly!" unless $dbfile;
    $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","", {
	PrintError => 1,
	AutoCommit => 0,
			}) or die $dbh->errstr;
    $sth_insert_files=$dbh->prepare('INSERT INTO buildreq_subst VALUES(?,?,?)') or die $dbh->errstr;
}

sub disconnect {
    $dbh->commit;
    $sth_insert_files->finish;
    # hack around closing dbh with active statement handles bug
    local $SIG{'__WARN__'} = sub {};
    $dbh->disconnect;
}

