diff options
Diffstat (limited to 'contrib/cpt-export')
-rwxr-xr-x | contrib/cpt-export | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/contrib/cpt-export b/contrib/cpt-export new file mode 100755 index 0000000..c124822 --- /dev/null +++ b/contrib/cpt-export @@ -0,0 +1,31 @@ +#!/bin/sh -ef +# Turn an installed package into a KISS tarball + +case "$1" in ''|--help|-h) printf '\033[1;33m-> \033[m%s\n' "usage: ${0##*/} [pkg]" ; exit 0 ; esac + +kiss l "${1:-null}" >/dev/null + +# Grab the package's version.. +read -r ver rel 2>/dev/null < \ + "$KISS_ROOT/var/db/kiss/installed/$1/version" + +# Reset the argument list. +pkg=$1 +set -- + +# Construct the argument list using each file. +while read -r file; do + [ -d "$KISS_ROOT/$file" ] || set -- "$@" ".$file" +done < "$KISS_ROOT/var/db/kiss/installed/$pkg/manifest" + +# Turn the list of files back into a package. +: "${KISS_COMPRESS:=gz}" +tar cf - -C / -- "$@" | case "$KISS_COMPRESS" in + bz2) bzip2 -z ;; + gz) gzip -6 ;; + xz) xz -zT 0 ;; + zst) zstd -3 ;; + *) gzip -6 ;; # Fallback to gzip +esac > "$pkg#$ver-$rel.tar.$KISS_COMPRESS" + +printf 'tarball created in %s\n' "$PWD/$pkg#$ver-$rel.tar.$KISS_COMPRESS" |