aboutsummaryrefslogtreecommitdiff
path: root/contrib/cpt-export
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/cpt-export')
-rwxr-xr-xcontrib/cpt-export50
1 files changed, 16 insertions, 34 deletions
diff --git a/contrib/cpt-export b/contrib/cpt-export
index 300c7c4..478ae27 100755
--- a/contrib/cpt-export
+++ b/contrib/cpt-export
@@ -12,47 +12,29 @@
## .Nm
## will use the name of the current directory as the package.
-case "$1" in
- --help|-h)
- printf 'usage: %s [pkg]\n' "${0##*/}"
- exit 0
- ;;
- '') set -- "${PWD##*/}"
-esac
-
-cpt-list "${1:-null}" >/dev/null
-
-# Grab the package's version..
-read -r ver rel 2>/dev/null < \
- "$CPT_ROOT/var/db/cpt/installed/$1/version"
-
### Environment variables:
### The compression method can be changed while creating a tarball, using the
### .Ev CPT_COMPRESS
### environment variable.
-# Fallback to gzip if there is a typo
-case "$CPT_COMPRESS" in bz2|gz|xz|zst|lz) ;; *) CPT_COMPRESS=gz; esac
+parser_definition() {
+ setup REST help:usage -- "usage: ${0##*/} [pkg]"
+ global_options silent
+}
-# Reset the argument list.
-pkg=$1
-tarball="$PWD/$1#$ver-$rel.tar.$CPT_COMPRESS"
-set --
+# shellcheck disable=1091
+. cpt-lib
-# Construct the argument list using each file.
-eval set -- "$(sed '/\/$/d;s|^|".|;s|$|"|' \
- "$CPT_ROOT/var/db/cpt/installed/$pkg/manifest" | tr '\n' ' ')"
+[ "$1" ] || set -- "${PWD##*/}"
-# Turn the list of files back into a package.
-cd "$CPT_ROOT/"
-tar cf - -- "$@" |
+(pkg_list "$1" >/dev/null)
+
+# Grab the package's version..
+read -r ver rel 2>/dev/null < "$sys_db/$1/version"
-case "$CPT_COMPRESS" in
- bz2) bzip2 -z ;;
- gz) gzip -6 ;;
- xz) xz -zT 0 ;;
- zst) zstd -3 ;;
- lz) lzip -6 ;;
-esac > "$tarball"
+tarball="$PWD/$1#$ver-$rel.tar.$CPT_COMPRESS"
-printf 'tarball created in %s\n' "$tarball"
+# Turn the list of files back into a package.
+cd "$CPT_ROOT/"
+sed 's/^/./' "$sys_db/$1/manifest" | pax -wd | compress > "$tarball"
+out "tarball created in $tarball"