
PKGBUILD parser written in BASH
By: a guest on
Aug 5th, 2010 | syntax:
Bash | size: 0.84 KB | hits: 167 | expires: Never
#!/bin/bash
echo '<?php'
. PKGBUILD
get_function() {
export -f "$1" || exit 1;
bash -c 'env' | tr '\n' '\0' | sed 's/.*'"$1"'=() {\(.*\)}.*/\1/g' | tr '\0' '\n'
}
echo '$packages=array('
echo "${pkgname[*]}" | egrep -o '[a-z0-9-]'* | while read pkg; do echo "'$pkg', "; done
echo ');'
echo "${pkgname[*]}" | egrep -o '[a-z0-9-]'* | while read pkg; do
get_function package_"$pkg" | while read i; do eval "$i" &>/dev/null; echo '$pkgdescs['"'$pkg']='$pkgdesc';"; done | tail -n1
done;
#[02:24:43] 0 ;) harvie@harvie-ntb tmp $ ./parse.sh
#<?php
#$packages=array(
#'ldns-lib',
#'ldns-tools',
#'ldns-drill',
#);
#$pkgdescs['ldns-lib']='libldns DNSSEC enabled DNS library';
#$pkgdescs['ldns-tools']='Some utilities using libldns';
#$pkgdescs['ldns-drill']='Drill DNSSEC utility from LDNS package (ala enabled Bind's dig)';