resticprofiles-base/scripts/os

101 lines
2.3 KiB
Text
Raw Normal View History

2023-12-03 02:09:46 -05:00
#!/bin/bash
restoreDir="/etc/restore"
kernel="$(uname -s)"
scriptPath="$(dirname "$(readlink -f "$0")")"
source "${scriptPath}/functions.sh"
2023-12-03 02:09:46 -05:00
if [[ "$kernel" == "Darwin" ]]; then
restoreDir="${HOME}/restore"
fi
createRestoreDir() {
if [[ -d "${restoreDir}" ]]; then
2024-07-07 16:36:14 -04:00
rm -rf "${restoreDir:?}/*" || exit 2
2023-12-03 02:09:46 -05:00
else
mkdir -p "${restoreDir}" || exit 2
fi
}
checkOS() {
2024-07-07 15:51:24 -04:00
if [[ "$kernel" == "Darwin" ]]; then
2023-12-03 02:09:46 -05:00
return 0
elif [[ "$kernel" == "Linux" ]]; then
if [[ -f /etc/os-release ]]; then
source /etc/os-release
DISTRO="$ID"
DISTRO_CURRENT="$DISTRO"
if [[ -n "$ID_LIKE" ]]; then
2024-07-07 15:57:40 -04:00
DISTRO="${ID_LIKE%% *}"
fi
2023-12-03 02:09:46 -05:00
return 0
else
echo "Unknown Linux Distribution"
return 1
fi
fi
return 1
}
runOsHook() {
local hook="$1"
if [[ "$kernel" == "Darwin" ]]; then
"${scriptPath}/os_macos" "$hook"
elif [[ "$kernel" == "Linux" ]]; then
case "$DISTRO" in
2024-07-07 16:36:14 -04:00
debian|ubuntu) "${scriptPath}/os_debian" "$hook";;
2023-12-03 02:09:46 -05:00
fedora) "${scriptPath}/os_fedora" "$hook";;
2024-07-07 16:36:14 -04:00
arch) "${scriptPath}/os_arch" "$hook";;
2023-12-03 02:09:46 -05:00
solus) "${scriptPath}/os_solus" "$hook";;
opensuse-leap) "${scriptPath}/os_suse" "$hook";;
opensuse-tumbleweed) "${scriptPath}/os_suse" "$hook";;
esac
2024-06-28 13:15:10 -04:00
if command -v flatpak &>/dev/null; then
"${scriptPath}/flatpak" "$hook"
fi
2023-12-03 02:09:46 -05:00
fi
return $?
}
hook_before() {
checkOS || exit 200
2024-07-07 16:36:14 -04:00
pushd "$scriptPath" &>/dev/null || exit 201
2024-01-09 22:57:47 -05:00
git checkout -- .
git pull
2024-07-07 16:36:14 -04:00
popd &>/dev/null || exit 201
2023-12-03 02:09:46 -05:00
createRestoreDir || exit $?
runOsHook before
}
hook_fail() {
checkOS || exit 200
runOsHook fail
2023-12-03 02:09:46 -05:00
}
hook_after() {
checkOS || exit 200
backup_partitions || exit 200
runOsHook after
}
hook_final() {
checkOS || exit 200
2023-12-03 02:09:46 -05:00
if [[ ! -f "${restoreDir}/.do-not-delete" ]]; then
rm -rf "$restoreDir"
fi
runOsHook final
2023-12-03 02:09:46 -05:00
}
case "$1" in
before) hook_before || exit $?;;
after) hook_after || exit $?;;
fail) hook_final || exit $?;;
finally) hook_final || exit $?;;
2023-12-03 02:09:46 -05:00
esac