From b89f063fcd25ea9d08c1374ea180eefe8c841614 Mon Sep 17 00:00:00 2001 From: merakor Date: Fri, 12 Mar 2021 12:51:46 +0000 Subject: cpt-owns: use package manager library FossilOrigin-Name: 7219685e66294d1285d5d35cacbfb35f112154544f26fab2fc095db4eda1d906 --- contrib/cpt-owns | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) (limited to 'contrib') diff --git a/contrib/cpt-owns b/contrib/cpt-owns index 494e0fd..c9bc457 100755 --- a/contrib/cpt-owns +++ b/contrib/cpt-owns @@ -1,12 +1,17 @@ #!/bin/sh -e # Check which package owns a file -case "$1" in ''|--help|-h) printf '%s\n' "usage: ${0##*/} [file]" ; exit 0 ; esac +# Source the package manager library. +# shellcheck disable=1091 +. cpt-lib -# If full path is not specified, use either the current directory, or look for -# a command. -case "$1" in /*) ;; - *) +case "$1" in ''|--help|-h) out "usage: ${0##*/} [file]"; exit 0; esac + +# If full path is not specified, use either the current directory, or look for a +# command. +case "$1" in + /*) ;; + *) if [ -f "$1" ]; then set -- "$PWD/$1" else @@ -14,28 +19,15 @@ case "$1" in /*) ;; fi esac -# Strip 'CPT_ROOT' from the file path if passed and -# follow symlinks. +# Strip 'CPT_ROOT' from the file path if passed and follow symlinks. file="${1#$CPT_ROOT}" dirname=$(_readlinkf "$CPT_ROOT/${file%/*}") file="$dirname/${file##*/}" # Check if the file exists and exit if it is not. [ -f "$file" ] || { - [ -d "$file" ] && printf '%s\n' \ - "error: please specify a file instead of a directory" >&2 || - printf '%s\n' "error: file '$1' doesn't exist." >&2 - exit 1 + [ -d "$file" ] && die "please specify a file instead of a directory" + die "file '$1' doesn't exist." } -# Print the full path to the manifest file which contains -# the match to our search. -pkg_owns=$(grep -lFx "${file#$CPT_ROOT}" \ - "$CPT_ROOT/var/db/cpt/installed/"*/manifest) - - -# Extract the package name from the path above. -pkg_owns=${pkg_owns%/*} -pkg_owns=${pkg_owns##*/} - -printf '%s\n' "$pkg_owns" +pkg_owner -lFx "$file" || die "Cannot determine which package owns '$file'" -- cgit v1.2.3