[arch-projects] [namcap] [PATCH 1/2] parsepkgbuild: reduce a lot of boilerplate by being more templated
When listing out the contents of a variable, use loops and references to the variables in order to reduce code and make it easier to extend. In the future, a new metadata type can be added simply by appending to meta_keys=() Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> --- parsepkgbuild.sh | 127 +++++------------------------------------------ 1 file changed, 12 insertions(+), 115 deletions(-) diff --git a/parsepkgbuild.sh b/parsepkgbuild.sh index d85574d..66cea40 100644 --- a/parsepkgbuild.sh +++ b/parsepkgbuild.sh @@ -18,123 +18,20 @@ fi if [ -n "$pkgdesc" ]; then echo -e "%DESC%\n$pkgdesc\n" fi -if [ -n "$groups" ]; then - echo "%GROUPS%" - for i in ${groups[@]}; do echo $i; done - echo "" -fi - -if [ -n "$url" ]; then - echo -e "%URL%\n$url\n" -fi -if [ -n "$license" ]; then - echo "%LICENSE%" - for i in ${license[@]}; do echo $i; done - echo "" -fi -if [ -n "$arch" ]; then - echo "%ARCH%" - for i in ${arch[@]}; do echo $i; done - echo "" -fi -if [ -n "$builddate" ]; then - echo -e "%BUILDDATE%\n$builddate\n" -fi -if [ -n "$packager" ]; then - echo -e "%PACKAGER%\n$packager\n" -fi - -if [ -n "$replaces" ]; then - echo "%REPLACES%" - for i in "${replaces[@]}"; do echo $i; done - echo "" -fi -if [ -n "$force" ]; then - echo -e "%FORCE%\n" -fi -# create depends entry -if [ -n "$depends" ]; then - echo "%DEPENDS%" - for i in "${depends[@]}"; do echo $i; done - echo "" -fi -if [ -n "$makedepends" ]; then - echo "%MAKEDEPENDS%" - for i in "${makedepends[@]}"; do echo $i; done - echo "" -fi -if [ -n "$optdepends" ]; then - echo "%OPTDEPENDS%" - for i in "${optdepends[@]}"; do echo $i; done - echo "" -fi -if [ -n "$conflicts" ]; then - echo "%CONFLICTS%" - for i in "${conflicts[@]}"; do echo $i; done - echo "" -fi -if [ -n "$provides" ]; then - echo "%PROVIDES%" - for i in "${provides[@]}"; do echo $i; done - echo "" -fi -if [ -n "$backup" ]; then - echo "%BACKUP%" - for i in "${backup[@]}"; do echo $i; done - echo "" -fi -if [ -n "$options" ]; then - echo "%OPTIONS%" - for i in "${options[@]}"; do echo $i; done - echo "" -fi -if [ -n "$source" ]; then - echo "%SOURCE%" - for i in "${source[@]}"; do echo $i; done - echo "" -fi -if [ -n "$validpgpkeys" ]; then - echo "%VALIDGPGKEYS%" - for i in "${validpgpkeys[@]}"; do echo $i; done - echo "" -fi -if [ -n "$md5sums" ]; then - echo "%MD5SUMS%" - for i in "${md5sums[@]}"; do echo $i; done - echo "" -fi -if [ -n "$sha1sums" ]; then - echo "%SHA1SUMS%" - for i in "${sha1sums[@]}"; do echo $i; done - echo "" -fi -if [ -n "$sha224sums" ]; then - echo "%SHA224SUMS%" - for i in "${sha224sums[@]}"; do echo $i; done - echo "" -fi -if [ -n "$sha256sums" ]; then - echo "%SHA256SUMS%" - for i in "${sha256sums[@]}"; do echo $i; done - echo "" -fi -if [ -n "$sha384sums" ]; then - echo "%SHA384SUMS%" - for i in "${sha384sums[@]}"; do echo $i; done - echo "" -fi -if [ -n "$sha512sums" ]; then - echo "%SHA512SUMS%" - for i in "${sha512sums[@]}"; do echo $i; done - echo "" -fi - -if [ -n "$install" ]; then - echo -e "%INSTALL%\n$install\n" -fi +meta_keys=(groups url license arch builddate packager replaces force depends + makedepends optdepends conflicts provides backup options source + validpgpkeys {md5,sha{1,224,256,384,512}}sums install) +for key in "${meta_keys[@]}"; do + arr="$key[@]" + if [[ -n ${!key} ]]; then + echo "%${key^^}%" + for i in "${!arr}"; do echo "$i"; done + echo "" + fi +done -unset i +unset arr key meta_keys i echo "%SETVARS%" compgen -A variable } -- 2.21.0
It is now possible to use b2sums to verify file integrity. See https://git.archlinux.org/pacman.git/commit/?id=e03752e6adc86cbb4cb4f52a38f6... Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> --- Namcap/rules/arrays.py | 9 +++++---- Namcap/rules/extravars.py | 9 +++++---- Namcap/rules/missingvars.py | 6 +++--- parsepkgbuild.sh | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Namcap/rules/arrays.py b/Namcap/rules/arrays.py index 5ca33cc..f841ca1 100644 --- a/Namcap/rules/arrays.py +++ b/Namcap/rules/arrays.py @@ -1,7 +1,7 @@ -# +# # namcap rules - array # Copyright (C) 2003-2009 Jesse Young <jesseyoung@gmail.com> -# +# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# +# """Verifies that array variables are actually arrays""" @@ -29,7 +29,8 @@ class package(PkgbuildRule): arrayvars = ['arch', 'license', 'groups', 'depends', 'makedepends', 'optdepends', 'checkdepends', 'provides', 'conflicts', 'replaces', 'backup', 'options', 'source', 'noextract', 'md5sums', 'sha1sums', - 'sha224sums', 'sha256sums', 'sha384sums', 'sha512sums', 'validpgpkeys'] + 'sha224sums', 'sha256sums', 'sha384sums', 'sha512sums', 'b2sums', + 'validpgpkeys'] for i in pkginfo.pkgbuild: m = re.match('\s*(.*)\s*=\s*(.*)$', i) for j in arrayvars: diff --git a/Namcap/rules/extravars.py b/Namcap/rules/extravars.py index 81084f8..bea575a 100644 --- a/Namcap/rules/extravars.py +++ b/Namcap/rules/extravars.py @@ -1,7 +1,7 @@ -# +# # namcap rules - extravars # Copyright (C) 2003-2009 Jesse Young <jesseyoung@gmail.com> -# +# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# +# from itertools import product from Namcap.ruleclass import * @@ -26,7 +26,8 @@ class package(PkgbuildRule): def analyze(self, pkginfo, tar): carch_vars = ['checkdepends', 'conflicts', 'depends', 'makedepends', 'optdepends', 'provides', 'replaces', 'source', 'md5sums', - 'sha224sums', 'sha1sums', 'sha256sums', 'sha384sums', 'sha512sums'] + 'sha224sums', 'sha1sums', 'sha256sums', 'sha384sums', + 'sha512sums', 'b2sums'] stdvars = ['arch', 'license', 'backup', 'noextract', 'pkgname', 'pkgbase', 'pkgver', 'pkgrel', 'epoch', 'pkgdesc', 'groups', 'url', 'install', 'changelog', diff --git a/Namcap/rules/missingvars.py b/Namcap/rules/missingvars.py index 25445e2..5814037 100644 --- a/Namcap/rules/missingvars.py +++ b/Namcap/rules/missingvars.py @@ -3,7 +3,7 @@ # namcap rules - missingvars # Copyright (C) 2003-2009 Jason Chu <jason@archlinux.org> # Copyright (C) 2011 Rémy Oudompheng <remy@archlinux.org> -# +# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# +# """Checks for missing variables in PKGBUILD""" @@ -30,7 +30,7 @@ class ChecksumsRule(PkgbuildRule): name = "checksums" description = "Verifies checksums are included in a PKGBUILD" def analyze(self, pkginfo, tar): - checksums=[('md5', 32), ('sha1', 40), ('sha224', 56), ('sha256', 64), ('sha384', 96), ('sha512', 128)] + checksums=[('md5', 32), ('sha1', 40), ('sha224', 56), ('sha256', 64), ('sha384', 96), ('sha512', 128), ('b2', 128)] if "source" in pkginfo: haschecksums = False diff --git a/parsepkgbuild.sh b/parsepkgbuild.sh index 66cea40..4ac996a 100644 --- a/parsepkgbuild.sh +++ b/parsepkgbuild.sh @@ -21,7 +21,7 @@ fi meta_keys=(groups url license arch builddate packager replaces force depends makedepends optdepends conflicts provides backup options source - validpgpkeys {md5,sha{1,224,256,384,512}}sums install) + validpgpkeys {md5,sha{1,224,256,384,512},b2}sums install) for key in "${meta_keys[@]}"; do arr="$key[@]" if [[ -n ${!key} ]]; then -- 2.21.0
participants (1)
-
Eli Schwartz