Add an additional fake package variable '%SETVARS%' that shows the currently defined variables when processing a PKGBUILD. Use this list in the extravars rule instead of broke-ass regex parsing that will never catch every possible corner case. Signed-off-by: Dan McGee <dan@archlinux.org> --- Namcap/rules/extravars.py | 11 ++++------- parsepkgbuild.sh | 8 ++++---- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Namcap/rules/extravars.py b/Namcap/rules/extravars.py index 01031f5..0fcdb53 100644 --- a/Namcap/rules/extravars.py +++ b/Namcap/rules/extravars.py @@ -31,12 +31,9 @@ class package(PkgbuildRule): 'pkgbase', 'pkgver', 'pkgrel', 'pkgdesc', 'groups', 'url', 'install', 'changelog', 'options', 'optdepends'] - for i in pkginfo.pkgbuild: - m = re.match('[\s]*([a-z][^\s=]*[^+])=', i) - if m: - varname = m.group(1) - if varname not in stdvars: - if not varname.startswith('_'): - self.warnings.append(("extra-var-begins-without-underscore %s", varname)) + for varname in pkginfo["setvars"]: + if varname.islower() and varname not in stdvars \ + and not varname.startswith('_'): + self.warnings.append(("extra-var-begins-without-underscore %s", varname)) # vim: set ts=4 sw=4 noet: diff --git a/parsepkgbuild.sh b/parsepkgbuild.sh index d601579..5ffa566 100644 --- a/parsepkgbuild.sh +++ b/parsepkgbuild.sh @@ -124,6 +124,9 @@ if [ -n "$install" ]; then echo -e "%INSTALL%\n$install\n" fi +unset i +echo "%SETVARS%" +compgen -A variable } # is it a split pkgbuild ? @@ -136,10 +139,7 @@ if [ -n "${pkgbase}" ]; then for i in ${pkgnames[@]}; do echo $i; done echo "" pkginfo -fi - -# print per package information -if [ -n "${pkgbase}" ]; then + # print per package information for subpkg in ${pkgnames[@]} do echo -e '\0' -- 1.7.4.1