Don't like ads? PRO users don't see any ads ;-)
Guest

PKGBUILD parser written in BASH

By: a guest on Aug 5th, 2010  |  syntax: Bash  |  size: 0.84 KB  |  hits: 167  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/bin/bash
  2. echo '<?php'
  3. . PKGBUILD
  4.  
  5. get_function() {
  6.   export -f "$1" || exit 1;
  7.   bash -c 'env' | tr '\n' '\0' | sed 's/.*'"$1"'=() {\(.*\)}.*/\1/g' | tr '\0' '\n'
  8. }
  9.  
  10. echo '$packages=array('
  11. echo "${pkgname[*]}" | egrep -o '[a-z0-9-]'* | while read pkg; do echo "'$pkg', "; done
  12. echo ');'
  13.  
  14. echo "${pkgname[*]}" | egrep -o '[a-z0-9-]'* | while read pkg; do
  15.   get_function package_"$pkg" | while read i; do eval "$i" &>/dev/null; echo '$pkgdescs['"'$pkg']='$pkgdesc';"; done | tail -n1
  16. done;
  17.  
  18. #[02:24:43] 0 ;) harvie@harvie-ntb tmp $ ./parse.sh
  19. #<?php
  20. #$packages=array(
  21. #'ldns-lib',
  22. #'ldns-tools',
  23. #'ldns-drill',
  24. #);
  25. #$pkgdescs['ldns-lib']='libldns DNSSEC enabled DNS library';
  26. #$pkgdescs['ldns-tools']='Some utilities using libldns';
  27. #$pkgdescs['ldns-drill']='Drill DNSSEC utility from LDNS package (ala enabled Bind's dig)';