diff options
author | Justin Davis <jrcd83@gmail.com> | 2011-10-20 20:09:31 +0200 |
---|---|---|
committer | Justin Davis <jrcd83@gmail.com> | 2011-10-20 20:09:31 +0200 |
commit | d4b2e11abfa9b36cbe57917ee9e0cabffcf0b376 (patch) | |
tree | d749485c6fd2a93f8b1d1470552ff5fdca451e11 | |
parent | f0dbbbc9c28a19cca1320884122b3368eace2d16 (diff) | |
download | genpkg-d4b2e11abfa9b36cbe57917ee9e0cabffcf0b376.tar.gz genpkg-d4b2e11abfa9b36cbe57917ee9e0cabffcf0b376.tar.xz |
Rewrite alot of makepkgbuild.
-rwxr-xr-x | bin/makepkgbuild | 111 |
1 files changed, 54 insertions, 57 deletions
diff --git a/bin/makepkgbuild b/bin/makepkgbuild index 0df3bdb..3e044b6 100755 --- a/bin/makepkgbuild +++ b/bin/makepkgbuild @@ -2,85 +2,82 @@ prog=makepkgbuild -appendpb() +die() { - txt=$(awk -v f=$1 'BEGIN { FS = "\n"; RS = "" } - $1 ~ "^" f "[(][)]<?$" { for (i = 2; i <= NF; i++) print $i }' \ - PKGMETA | sed 's/^/ /') - - case "$txt" in - '') return 0 ;; - *) echo "/^ *${func}() *{ -/^} -i -$txt -. -wq -" | ed PKGBUILD >/dev/null 2>&1 - return $? ;; - esac + rc=$1; shift + echo "$prog: $*" 1>&2 + exit $rc } -prependpb() +editpb() { - txt=$(awk -v f=$1 'BEGIN { FS = "\n"; RS = "" } - $1 == ">" f "()" { for (i = 2; i <= NF; i++) print $i }' \ - PKGMETA | sed 's/^/ /') + op=$1 func=$2 - case "$txt" in - '') return 0 ;; - *) echo "/^ *${func}() *{ + case "$op" in + append) + regexp="^${func}[(][)]<?$" + edin="/^ *$func() *{ +/^} +i" ;; + prepend) + regexp=">${func}()" + edin="/^ *$func() *{ /^[ \t]*cd/ -a +a" ;; + *) die 2 unknown editpb operation: $op + esac + + txt=$(awk -v r="$regexp" -v f="$func" 'BEGIN { FS = "\n"; RS = "" } + $1 ~ r { for (i = 2; i <= NF; i++) print $i }' \ + PKGMETA | sed 's/^/ /') + [ X"$txt" = X ] && return 0 + + cat <<END | ed -s PKGBUILD >/dev/null +$edin $txt . wq -" | ed PKGBUILD >/dev/null 2>&1 - return $? ;; - esac +END + return $? } if ! [ -r PKGMETA ] then - echo "$prog: PKGMETA could not be read." 1>&2 - exit 1 + die 1 "PKGMETA could not be read." fi case "$TDIR" in -'') echo "$prog: TDIR env variable is not set." 1>&2 - exit 1 +'') die 1 "TDIR env variable is not set." esac -tcmd=$(awk ' +ttcmds=$(awk ' BEGIN { FS = "\n"; RS = "" } - $1 == "template" { for (i = 2; i <= NF; i++) print $i }' PKGMETA \ - | while read line - do - set -- $line - cmd="$TDIR/$1" - if ! [ -x $cmd ] - then - echo "$prog: Unknown template command: $cmd" 1>&2 - exit 2 - fi - echo "$TDIR/$*" - done \ - | tr '\n' '|' | sed 's/[|]$//') + $1 == "template" { for (i = 2; i <= NF; i++) print $i }' PKGMETA) -"$TDIR/pbfields" <PKGMETA >PKGBUILD -$tcmd <PKGMETA >>PKGBUILD - -for func in package check build +oifs=$IFS +IFS=' +' +for ttcmd in "$ttcmds" do - if ! appendpb $func + IFS=' ' + set -- $ttcmd + cmd="$TDIR/$1" + if ! [ -f "$cmd" -a -x "$cmd" ] then - echo "$prog: error when trying to append to ${func}()" 1>&2 - exit 2 - fi - if ! prependpb $func - then - echo "$prog: error when trying to prepend to ${func}()" 1>&2 - exit 2 + die 2 "Unknown template command: $cmd" fi done +IFS=$oifs + +ttcmd="cat PKGMETA$(echo "$ttcmds" | sed "s!^! | $TDIR/!" | tr -d '\n')" +"$TDIR/pbfields" <PKGMETA >PKGBUILD +eval $ttcmd >>PKGBUILD || die 2 "template pipeline ($ttcmd) failed" + +for func in package check build +do + for op in append prepend + do + editpb $op $func || die 2 "error $? when trying to $op to ${func}()" + done +done |