#!/bin/sh -e # Check which package owns a file case "$1" in ''|--help|-h) printf '%s\n' "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 set -- "$(command -v "$1")" fi esac # Strip 'CPT_ROOT' from the file path if passed and # follow symlinks. file="${1#$CPT_ROOT}" dirname=$(cpt-readlink "$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 } # 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"