diff options
-rwxr-xr-x | bin/pkglist2preseed | 96 |
1 files changed, 56 insertions, 40 deletions
diff --git a/bin/pkglist2preseed b/bin/pkglist2preseed index 696398c..c93debe 100755 --- a/bin/pkglist2preseed +++ b/bin/pkglist2preseed @@ -1,40 +1,56 @@ -#!/bin/sh - -set -eu - -infile="$1" -outfile="$2" -pkgfiles="$3" -tweakfiles="$4" - -outdir=$(dirname $outfile) -altinfile=$(dirname $infile)/script.sh.in -altoutfile=$outdir/script.sh - -pkgdesc=$(perl -nE '/^[#]{2} (.*)/ and say "# $1"; /^[#]{1} (.*)/ and say "# * $1"' $pkgfiles) #' -pkglist=$(perl -ne 'chomp; /^[^#]+/ and print "$_ "' $pkgfiles) - -tweakdesc=$(perl -nE '/^[#]{2} (.*)/ and say "# $1"; /^[#]{1} (.*)/ and say "# * $1"' $tweakfiles) #' -tweaklist=$(perl -ne 'chomp; /^(?!#)\s*(.+)/ and print "$1;"' $tweakfiles) - -export pkgdesc pkglist tweakdesc tweaklist - -mkdir -p $outdir -perl -p \ - -e 's,__PKGDESC__,$ENV{"pkgdesc"},;'\ - -e 's,__PKGLIST__,$ENV{"pkglist"},;'\ - -e 's,__TWEAKDESC__,$ENV{"tweakdesc"},;'\ - -e 's,__TWEAKLIST__,$ENV{"tweaklist"},;'\ - -e 's,chroot\s+/target\s+,,g;'\ - -e 's,/target/,/,g;'\ - < $altinfile \ - > $altoutfile~ -mv -f $altoutfile~ $altoutfile -perl -p \ - -e 's,__PKGDESC__,$ENV{"pkgdesc"},;'\ - -e 's,__PKGLIST__,$ENV{"pkglist"},;'\ - -e 's,__TWEAKDESC__,$ENV{"tweakdesc"},;'\ - -e 's,__TWEAKLIST__,$ENV{"tweaklist"},;'\ - < $infile \ - > $outfile~ -mv -f $outfile~ $outfile +#!/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 ($pkgdesc, $pkglist); +foreach (@pkgfiles) { + foreach (path($_)->lines) { + chomp; + /^[#]{2} (.*)/ and $pkgdesc .= "# $1\n"; + /^[#]{1} (.*)/ and $pkgdesc .= "# * $1\n"; + /^[^#]+/ and $pkglist .= "$_ "; + }; +}; +chomp $pkgdesc; + +my ($tweakdesc, $tweaklist); +foreach (@tweakfiles) { + foreach (path($_)->lines) { + chomp; + /^[#]{2} (.*)/ and $tweakdesc .= "# $1\n"; + /^[#]{1} (.*)/ and $tweakdesc .= "# * $1\n"; + /^(?!#)\s*(.+)/ and $tweaklist .= "$1;" + }; +}; +chomp $tweakdesc; + +$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; |