Add full diversion machinery like we have in kali-themes and kali-defaults
Greatly inspired by af96d37fe08c8d8a49bbb2f467214de279276291 in
kali-defaults.
Fixes: #7
Arnaud Rebillout
1 year, 11 months ago
|
0 |
#!/bin/sh
|
|
1 |
|
|
2 |
update_script() {
|
|
3 |
local script=$1
|
|
4 |
(
|
|
5 |
sed -n -e '1,/^FILES_TO_DIVERT="/ p' $script
|
|
6 |
cat files-to-divert
|
|
7 |
sed -n -e '/^" # END FILES_TO_DIVERT/,$ p' $script
|
|
8 |
) > $script.new
|
|
9 |
mv $script.new $script
|
|
10 |
}
|
|
11 |
|
|
12 |
update_script debian/kali-menu.preinst
|
|
13 |
update_script debian/kali-menu.postinst
|
|
14 |
update_script debian/kali-menu.postrm
|
3 | 3 |
exec-in-shell usr/share/kali-menu/
|
4 | 4 |
menu-icons/* usr/share/icons/hicolor/
|
5 | 5 |
menus/kali-applications.menu etc/xdg/menus/applications-merged/
|
6 | |
menus/xfce-applications.menu etc/xdg/menus/
|
|
6 |
menus/xfce-applications.menu usr/share/kali-menu/etc/xdg/menus/
|
7 | 7 |
polkit-1/* usr/share/polkit-1/
|
8 | 8 |
update-kali-menu usr/share/kali-menu/
|
0 | 0 |
#!/bin/sh
|
1 | 1 |
|
2 | |
set -e
|
|
2 |
set -e
|
|
3 |
|
|
4 |
FILES_TO_DIVERT="
|
|
5 |
/etc/xdg/menus/xfce-applications.menu
|
|
6 |
" # END FILES_TO_DIVERT
|
|
7 |
|
|
8 |
install_config_file() {
|
|
9 |
local file=$1
|
|
10 |
local opt=$2
|
|
11 |
local orig_file="/usr/share/kali-menu$file"
|
|
12 |
if [ "$opt" = "force" ] || ([ ! -e "$file" ] && [ -e "$orig_file" ]); then
|
|
13 |
echo "Installing $orig_file as $file"
|
|
14 |
mkdir -p "$(dirname "$file")"
|
|
15 |
cp "$orig_file" "$file"
|
|
16 |
fi
|
|
17 |
}
|
|
18 |
|
|
19 |
if [ "$1" = "configure" ]; then
|
|
20 |
for file in $FILES_TO_DIVERT; do
|
|
21 |
install_config_file "$file"
|
|
22 |
done
|
|
23 |
fi
|
3 | 24 |
|
4 | 25 |
case "$1" in
|
5 | 26 |
configure|triggered)
|
1 | 1 |
|
2 | 2 |
set -e
|
3 | 3 |
|
|
4 |
FILES_TO_DIVERT="
|
|
5 |
/etc/xdg/menus/xfce-applications.menu
|
|
6 |
" # END FILES_TO_DIVERT
|
|
7 |
|
4 | 8 |
drop_diversion() {
|
5 | |
if [ -e "$1.original" ]; then
|
6 | |
mv "$1.original" "$1"
|
7 | |
fi
|
8 | |
dpkg-divert --no-rename --package kali-menu \
|
9 | |
--divert $1.original \
|
10 | |
--remove $1
|
|
9 |
local file=$1
|
|
10 |
dpkg-divert --rename --package kali-menu \
|
|
11 |
--divert "$file.original" \
|
|
12 |
--remove "$file"
|
11 | 13 |
}
|
12 | 14 |
|
13 | 15 |
case "$1" in
|
14 | 16 |
remove)
|
15 | |
drop_diversion /etc/xdg/menus/xfce-applications.menu
|
|
17 |
for file in $FILES_TO_DIVERT; do
|
|
18 |
rm -f "$file"
|
|
19 |
drop_diversion "$file"
|
|
20 |
done
|
16 | 21 |
# Remove the desktop files installed by update-kali-menu
|
17 | 22 |
find /usr/share/applications -name '*.desktop' | \
|
18 | 23 |
xargs grep -l ^X-Kali-Package | \
|
0 | 0 |
#!/bin/sh
|
1 | 1 |
|
2 | |
set -e
|
|
2 |
set -e
|
|
3 |
|
|
4 |
FILES_TO_DIVERT="
|
|
5 |
/etc/xdg/menus/xfce-applications.menu
|
|
6 |
" # END FILES_TO_DIVERT
|
3 | 7 |
|
4 | 8 |
setup_diversion() {
|
5 | |
local file="$1"
|
6 | |
divert_opts="--rename"
|
|
9 |
local file=$1
|
|
10 |
local divert_opts="--rename"
|
7 | 11 |
if [ -e "$file" ]; then
|
8 | 12 |
if dpkg --search "$file" >/dev/null 2>&1; then
|
9 | 13 |
# Keep original file to avoid spurious dpkg prompt
|
|
18 | 22 |
|
19 | 23 |
case "$1" in
|
20 | 24 |
install)
|
21 | |
setup_diversion /etc/xdg/menus/xfce-applications.menu
|
|
25 |
for file in $FILES_TO_DIVERT; do
|
|
26 |
setup_diversion "$file"
|
|
27 |
done
|
22 | 28 |
;;
|
23 | 29 |
|
24 | 30 |
upgrade)
|
25 | |
if dpkg --compare-versions "$2" lt 2020.1.0; then
|
26 | |
setup_diversion /etc/xdg/menus/xfce-applications.menu
|
27 | |
fi
|
|
31 |
# Dynamically add new diversions when required on upgrade
|
|
32 |
for file in $FILES_TO_DIVERT; do
|
|
33 |
if [ -z "$(dpkg-divert --listpackage "$file")" ]; then
|
|
34 |
setup_diversion "$file"
|
|
35 |
fi
|
|
36 |
done
|
28 | 37 |
;;
|
29 | 38 |
esac
|
30 | 39 |
|
|
0 |
/etc/xdg/menus/xfce-applications.menu
|