From: Nathan Wagner Date: Mon, 17 Sep 2018 12:02:15 +0000 (+0000) Subject: ignore missing runscript by default X-Git-Tag: v0.1.6~18 X-Git-Url: https://pd.if.org/git/?p=zpackage;a=commitdiff_plain;h=9bc9fdb39d33fff1c2e08d8d0c45c959b49a0909 ignore missing runscript by default Added option -R to require that there be one. add zpm-runscript to .gitignore add tests for required runscript phase add script to test runscript --- diff --git a/.gitignore b/.gitignore index 94ec018..8c399ac 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ zpm-hash zpm-stat zpm-findpkg zpm-shell +zpm-runscript *.zpm *.db soname diff --git a/t/scripts.t b/t/scripts.t new file mode 100755 index 0000000..47ac6f3 --- /dev/null +++ b/t/scripts.t @@ -0,0 +1,27 @@ +#!/bin/sh + +# test addfile + +. tap.sh + +plan 8 + +PF=test.db +pkgid=scriptrunner-1.0-1 + +require zpm init $PF +require zpm newpackage -f $PF $pkgid + +tryrun zpm setscript -f $PF scriptrunner-1.0-1 configure /bin/true +tryrun zpm runscript -f $PF -p configure scriptrunner-1.0-1 +tryrun zpm setscript -f $PF scriptrunner-1.0-1 configure /bin/false +zpm runscript -f $PF -p configure scriptrunner-1.0-1 2>/dev/null +failsok failure script fails + +zpm runscript -f $PF -p nosuchphase -R scriptrunner-1.0-1 2>/dev/null +failsok required non-existing script fails +tryrun zpm runscript -f $PF -p nosuchphase scriptrunner-1.0-1 2>/dev/null + +finish + +rm -f $PF diff --git a/zpm-runscript.c b/zpm-runscript.c index e6b1af5..84764b6 100644 --- a/zpm-runscript.c +++ b/zpm-runscript.c @@ -94,6 +94,7 @@ int main(int ac, char **av){ int failures = 0; char *pkgstr; int opt; + int required = 0; char hash[ZPM_HASH_STRLEN+1]; char *args[3]; @@ -110,16 +111,13 @@ int main(int ac, char **av){ } /* ZPM_PACKAGE_FILE ? */ - while ((opt = getopt(ac, av, "f:p:s:r:")) != -1) { + while ((opt = getopt(ac, av, "f:p:s:r:R")) != -1) { switch (opt) { - case 'f': db = optarg; - break; - case 'p': phase = optarg; - break; - case 's': script = optarg; - break; - case 'r': chroot = optarg; - break; + case 'f': db = optarg; break; + case 'p': phase = optarg; break; + case 's': script = optarg; break; + case 'r': chroot = optarg; break; + case 'R': required = 1; break; default: usage(); exit(EXIT_FAILURE); @@ -169,8 +167,10 @@ int main(int ac, char **av){ failures++; } } else { - fprintf(stderr, "no script for %s %s\n", phase, pkgid); - failures++; + if (required) { + fprintf(stderr, "no script for %s %s\n", phase, pkgid); + failures++; + } } free(pkgid); } else {