#!/usr/bin/perl

use strict;
use warnings;
use autodie qw(:all);;

use Path::Tiny;

my $infile = path($ARGV[0]);
my $outfile = path($ARGV[1]);
my @pkgfiles = split( ' ', $ARGV[2] );
my @tweakfiles = split( ' ', $ARGV[3] );

my $outdir = $outfile->parent;
my $altinfile = path( $infile->parent, 'script.sh.in' );
my $altoutfile = path( $outdir, 'script.sh' );

my (@pkglines, $pkgdesc, @pkg);
foreach (@pkgfiles) {
	push @pkglines, path($_)->lines;
};
grep { chomp } @pkglines;
grep { s/^[#]{1} (.*)/#  * $1/ } @pkglines;
grep { s/^[#]{2} (.*)/# $1/ } @pkglines;
$pkgdesc = join "\n", grep { /^[#] / } @pkglines;
@pkg = map { split } grep { /^[^#]/ } @pkglines;

my (@tweaklines, $tweakdesc, $tweaklist);
foreach (@tweakfiles) {
	push @tweaklines, path($_)->lines;
};
grep { chomp } @tweaklines;
grep { s/^[#]{1} (.*)/#  * $1/ } @tweaklines;
grep { s/^[#]{2} (.*)/# $1/ } @tweaklines;
grep { /^[^#]/ and s/(?<!;)$/ / } @tweaklines;
$tweakdesc = join "\n", grep { /^[#] / } @tweaklines;
$tweaklist = join "\\\n", grep { /^[^#]/ } @tweaklines;

my $pkglist = join( ' ', sort grep { /[^-]$/ } @pkg );
$pkglist .= " \\\n ";
$pkglist .= join( ' ', sort grep { /-$/ } @pkg );

$outdir->mkpath;
$_ = $altinfile->slurp;
s,__PKGDESC__,$pkgdesc,;
s,__PKGLIST__,$pkglist,;
s,__TWEAKDESC__,$tweakdesc,;
s,__TWEAKLIST__,$tweaklist,;
s,chroot\s+/target\s+,,g;
s,/target/,/,g;
$altoutfile->spew($_);
$_ = $infile->slurp;
s,__PKGDESC__,$pkgdesc,;
s,__PKGLIST__,$pkglist,;
s,__TWEAKDESC__,$tweakdesc,;
s,__TWEAKLIST__,$tweaklist,;
$outfile->spew($_);

1;
