#!/usr/bin/perl -wn
#
# Implements the rudimentary templating for *.vsn-in files,
# see the comment in debian/rules.

use strict;
our %v;
$v{''} = '@';
BEGIN {
    $v{version} = shift @ARGV;
    $v{flavour} = shift @ARGV;
}
sub printwarning () {
    our $printedwarning;
    return if $printedwarning++;
    print "# autogenerated, do not edit\n" if $.==1;
}
sub v {
    my ($k) = @_;
    $v{$k} // die "unknown $k";
}
our @yes;
printwarning unless m{^\#!};
if (m/^\s*\?\s*(\w+)\s*(!?)=\s*(.*?)\s*$/) {
    my @rhs = split /\s*\|\s*/, $3;
    push @yes, (!!(grep { v($1) eq $_ } @rhs) xor !!$2);
    next;
} elsif (m/^\s*\?\s*$/) {
    defined pop @yes or die "too many lone ? (endings)";
    next;
} elsif (m/^\s*\?/) {
    die "syntax";
}
next if grep { !$_ } @yes;
s{\@(\w*)\@}{ v($1) }ge;
print or die $!;
printwarning;
END {
    printwarning;
    die "too few lone ? (endings)" if @yes;
}
