aboutsummaryrefslogtreecommitdiff
path: root/contrib/cpt-owns
diff options
context:
space:
mode:
authormerakor <cem@ckyln.com>2020-07-24 09:45:05 +0000
committermerakor <cem@ckyln.com>2020-07-24 09:45:05 +0000
commita5742ec0d46f60fcbeec141744a2e35a9e5dd6d5 (patch)
tree653077a372cea7a5842db627546d2fab72c5f7e2 /contrib/cpt-owns
parent453a27cc1b956246c9639555268631abf0687e40 (diff)
downloadcpt-a5742ec0d46f60fcbeec141744a2e35a9e5dd6d5.tar.gz
contrib: rename scripts
FossilOrigin-Name: d35a756a5d603ac894873aeb0a30826cb4b3fe9e257ecf21298225e07f517ddd
Diffstat (limited to 'contrib/cpt-owns')
-rwxr-xr-xcontrib/cpt-owns30
1 files changed, 30 insertions, 0 deletions
diff --git a/contrib/cpt-owns b/contrib/cpt-owns
new file mode 100755
index 0000000..e14d579
--- /dev/null
+++ b/contrib/cpt-owns
@@ -0,0 +1,30 @@
+#!/bin/sh -e
+# Check which package owns a file
+
+case "$1" in ''|--help|-h) printf '%s\n' "usage: kiss-owns [file]" ; exit 0 ; esac
+
+# Strip 'KISS_ROOT' from the file path if passed and
+# follow symlinks.
+file="${1#$KISS_ROOT}"
+dirname=$(kiss-readlink "$KISS_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#$KISS_ROOT}" \
+ "$KISS_ROOT/var/db/kiss/installed/"*/manifest)
+
+
+# Extract the package name from the path above.
+pkg_owns=${pkg_owns%/*}
+pkg_owns=${pkg_owns##*/}
+
+printf '%s\n' "[$pkg_owns] owns '$1'"