#!/bin/sh -ef # Turn an installed package into a CPT tarball ## SYNOPSIS: ## .Nm ## .Op Ar pkg ## DESCRIPTION: ## .Nm ## creates a package tarball of an installed package using the system files ## declared on the package's manifest. If no package name is given, ## .Nm ## will use the name of the current directory as the package. ### Environment variables: ### The compression method can be changed while creating a tarball, using the ### .Ev CPT_COMPRESS ### environment variable. parser_definition() { setup REST help:usage -- "usage: ${0##*/} [pkg]" global_options silent } # shellcheck disable=1091 . cpt-lib [ "$1" ] || set -- "${PWD##*/}" (pkg_list "$1" >/dev/null) # Grab the package's version.. read -r ver rel 2>/dev/null < "$sys_db/$1/version" tarball="$PWD/$1#$ver-$rel.tar.$CPT_COMPRESS" # 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"