Files
postinstall-debian/modules/boot/grub-theme/module.sh
2026-03-15 04:54:51 +01:00

86 lines
2.5 KiB
Bash

#!/usr/bin/env bash
MODULE_GRUB_THEME_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
MODULE_GRUB_THEME_PROJECT_ROOT="$(cd "$MODULE_GRUB_THEME_DIR/../../.." && pwd)"
# shellcheck source=lib/package.sh
source "$MODULE_GRUB_THEME_PROJECT_ROOT/lib/package.sh"
# shellcheck source=modules/boot/grub-theme/config.sh
source "$MODULE_GRUB_THEME_DIR/config.sh"
# shellcheck source=modules/boot/grub-theme/metadata.conf
source "$MODULE_GRUB_THEME_DIR/metadata.conf"
module_grub_theme_metadata() {
printf '%s|%s|%s\n' "$MODULE_ID" "$MODULE_NAME" "$MODULE_DESCRIPTION"
}
module_grub_theme_archive_dir() {
if [[ -d "$MODULE_GRUB_THEME_PROJECT_ROOT/$POSTINSTALL_GRUB_THEME_ARCHIVE_DIR_PRIMARY" ]]; then
printf '%s\n' "$MODULE_GRUB_THEME_PROJECT_ROOT/$POSTINSTALL_GRUB_THEME_ARCHIVE_DIR_PRIMARY"
else
printf '%s\n' "$MODULE_GRUB_THEME_PROJECT_ROOT/$POSTINSTALL_GRUB_THEME_ARCHIVE_DIR_FALLBACK"
fi
}
module_grub_theme_list_archives() {
local archive_dir=""
archive_dir="$(module_grub_theme_archive_dir)"
find "$archive_dir" -maxdepth 1 -type f \( -name '*.zip' -o -name '*.tar.gz' -o -name '*.tgz' \) -printf '%f\n' | sort
}
module_grub_theme_extract() {
local archive_name="$1"
local archive_dir=""
local archive_path=""
local target_dir=""
archive_dir="$(module_grub_theme_archive_dir)"
archive_path="$archive_dir/$archive_name"
target_dir="$POSTINSTALL_GRUB_THEME_INSTALL_DIR/${archive_name%.*}"
mkdir -p "$target_dir"
case "$archive_name" in
*.zip)
if ! package_is_installed unzip; then
package_refresh_indexes
package_install unzip
fi
unzip -o "$archive_path" -d "$target_dir" >/dev/null
;;
*.tar.gz|*.tgz)
tar -xzf "$archive_path" -C "$target_dir"
;;
*)
ui_error "Archive de theme non supportee : $archive_name"
return 1
;;
esac
find "$target_dir" -type f -name 'theme.txt' | head -n 1
}
module_grub_theme_install() {
local archive_name="$1"
local theme_path=""
if [[ -z "$archive_name" ]]; then
ui_error "Aucune archive de theme specifiee"
return 1
fi
mkdir -p /etc/default/grub.d
theme_path="$(module_grub_theme_extract "$archive_name")" || return 1
printf 'GRUB_THEME="%s"\n' "$theme_path" > "$POSTINSTALL_GRUB_THEME_CONFIG_FILE"
update-grub
log_info "Theme GRUB configure : $archive_name"
ui_success "Theme GRUB configure : $archive_name"
}
module_grub_theme_test() {
test -f "$POSTINSTALL_GRUB_THEME_CONFIG_FILE" || return 1
grep -q '^GRUB_THEME=' "$POSTINSTALL_GRUB_THEME_CONFIG_FILE" || return 1
}