#!/usr/bin/perl
# license: GPLv3 || Artistic

use warnings;
use strict;

sub get_relation_expressions {
	my ($contents, $string) = @_;

	my $result = '';
	if ($contents =~ m/^$string:(.*)$/m) {
		$result = $1;
	}
	if ($contents =~ m/^$string-Indep:(.*)$/m) {
		$result .= ', ' if $result;
		$result .= $1;
	}

	$result =~ s/,\s*$//;
	$result =~ s/^\s*//;
	return $result;
}

sub quote_if_needed {
	my ($string) = @_;
	return $string ? qq/"$string"/ : $string;
}

my $control_file = shift @ARGV;
defined $control_file or die("Usage: $0 <control file> [<cupt options>]");
print "Control file: $control_file\n";

my @cupt_options = @ARGV;
if (@cupt_options) {
	print "Next options will be passed to cupt: '@cupt_options'\n";
}

my $control_file_contents;
do {
	local $/ = undef;
	open(my $fd, '<', $control_file) or die("cannot open '$control_file': $!");
	$control_file_contents = <$fd>;
	close($fd) or die("cannot close '$control_file': $!");
};
for ($control_file_contents) {
	s/^#.*$//mg;
	s/^\n//mg;
	s/\n\s+//g;
}

my $build_depends = get_relation_expressions($control_file_contents, 'Build-Depends');
my $build_conflicts = get_relation_expressions($control_file_contents, 'Build-Conflicts');

print "Detected Build-Depends: '$build_depends'\n";
print "Detected Build-Conflicts: '$build_conflicts'\n";

if ($build_conflicts) {
	$build_conflicts .= '-';
}

$build_depends = quote_if_needed($build_depends);
$build_conflicts = quote_if_needed($build_conflicts);

exec(qq/cupt satisfy @cupt_options $build_depends $build_conflicts/);
