forked from kiss-community/kiss
kiss: clean up pkg_swap
This commit is contained in:
parent
4337e1fdce
commit
a9e2f78f4a
60
kiss
60
kiss
@ -62,24 +62,6 @@ EOF
|
|||||||
id -u "${user:=root}" >/dev/null 2>&1 || user=root
|
id -u "${user:=root}" >/dev/null 2>&1 || user=root
|
||||||
}
|
}
|
||||||
|
|
||||||
find_replace() {
|
|
||||||
while IFS= read -r _line; do
|
|
||||||
case $_line in
|
|
||||||
"$1")
|
|
||||||
printf '%s\n' "$2"
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
printf '%s\n' "$_line"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done < "$3" |
|
|
||||||
|
|
||||||
sort -r > "$tmp_dir/.sed"
|
|
||||||
|
|
||||||
mv -f "$tmp_dir/.sed" "$3"
|
|
||||||
}
|
|
||||||
|
|
||||||
run_user_hook() {
|
run_user_hook() {
|
||||||
set -- "${1:-null}" "${2:-null}" "${3:-null}"
|
set -- "${1:-null}" "${2:-null}" "${3:-null}"
|
||||||
|
|
||||||
@ -571,6 +553,25 @@ pkg_manifest() (
|
|||||||
sed '/^\.\/$/d;ss.ss' > "${2:-"$pkg_dir"}/$1/$pkg_db/$1/manifest"
|
sed '/^\.\/$/d;ss.ss' > "${2:-"$pkg_dir"}/$1/$pkg_db/$1/manifest"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
pkg_manifest_replace() {
|
||||||
|
# Replace a line with another in manifest files.
|
||||||
|
while IFS= read -r _line; do
|
||||||
|
case $_line in
|
||||||
|
"$1")
|
||||||
|
printf '%s\n' "$2"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
printf '%s\n' "$_line"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done < "$sys_db/$3/manifest" |
|
||||||
|
|
||||||
|
sort -r > "$tmp_dir/.sed"
|
||||||
|
|
||||||
|
mv -f "$tmp_dir/.sed" "$sys_db/$3/manifest"
|
||||||
|
}
|
||||||
|
|
||||||
pkg_manifest_verify() {
|
pkg_manifest_verify() {
|
||||||
# Ensure that everything listed in the manifest exists in the tarball.
|
# Ensure that everything listed in the manifest exists in the tarball.
|
||||||
while read -r line; do
|
while read -r line; do
|
||||||
@ -932,7 +933,6 @@ pkg_swap() {
|
|||||||
# pkg_name + /path/to/file -> pkg_name>path>to>file
|
# pkg_name + /path/to/file -> pkg_name>path>to>file
|
||||||
alt=$(
|
alt=$(
|
||||||
printf %s "$1$2" |
|
printf %s "$1$2" |
|
||||||
|
|
||||||
sed 's|/|>|g'
|
sed 's|/|>|g'
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -942,31 +942,20 @@ pkg_swap() {
|
|||||||
die "alternative '$1 $2' doesn't exist"
|
die "alternative '$1 $2' doesn't exist"
|
||||||
|
|
||||||
elif [ -f "$2" ]; then
|
elif [ -f "$2" ]; then
|
||||||
# Figure out which package owns the file we are going to swap for
|
# Figure out which package owns the file we are going to swap.
|
||||||
# another package's. Print the full path to the manifest file which
|
|
||||||
# contains the match to our search.
|
|
||||||
pkg_owner -lFx "$2" ||
|
pkg_owner -lFx "$2" ||
|
||||||
die "file '$2' exists on filesystem but isn't owned"
|
die "file '$2' exists on filesystem but isn't owned"
|
||||||
|
|
||||||
# Convert the current owner to an alternative and rewrite its
|
|
||||||
# manifest file to reflect this.
|
|
||||||
cp -Pf "$KISS_ROOT/$2" "$pkg_owner>${alt#*>}"
|
cp -Pf "$KISS_ROOT/$2" "$pkg_owner>${alt#*>}"
|
||||||
|
|
||||||
find_replace \
|
pkg_manifest_replace \
|
||||||
"$2" \
|
"$2" "/$cho_db/$pkg_owner>${alt#*>}" "$pkg_owner"
|
||||||
"${PWD#"$KISS_ROOT"}/$pkg_owner>${alt#*>}" \
|
|
||||||
"../installed/$pkg_owner/manifest"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Convert the desired alternative to a real file and rewrite the manifest
|
|
||||||
# file to reflect this. The reverse of above.
|
|
||||||
mv -f "$alt" "$KISS_ROOT/$2"
|
mv -f "$alt" "$KISS_ROOT/$2"
|
||||||
|
|
||||||
# Update the matching line in the manifest.
|
pkg_manifest_replace \
|
||||||
find_replace \
|
"/$cho_db/$alt" "$2" "$1"
|
||||||
"${PWD#"$KISS_ROOT"}/$alt" \
|
|
||||||
"$2" \
|
|
||||||
"../installed/$1/manifest"
|
|
||||||
|
|
||||||
printf '%s is now provided by %s (was %s)\n' "$2" "$1" "$pkg_owner"
|
printf '%s is now provided by %s (was %s)\n' "$2" "$1" "$pkg_owner"
|
||||||
}
|
}
|
||||||
@ -1581,6 +1570,7 @@ main() {
|
|||||||
|
|
||||||
# Define some paths which we will then use throughout the script.
|
# Define some paths which we will then use throughout the script.
|
||||||
sys_db=$KISS_ROOT/${pkg_db:=var/db/kiss/installed}
|
sys_db=$KISS_ROOT/${pkg_db:=var/db/kiss/installed}
|
||||||
|
cho_db=${pkg_db%%/installed}/choices
|
||||||
|
|
||||||
# Ensure that the KISS_ROOT doesn't end with a '/'.
|
# Ensure that the KISS_ROOT doesn't end with a '/'.
|
||||||
KISS_ROOT=${KISS_ROOT%"${KISS_ROOT##*[!/]}"}
|
KISS_ROOT=${KISS_ROOT%"${KISS_ROOT##*[!/]}"}
|
||||||
|
Loading…
Reference in New Issue
Block a user