86 lines
2.5 KiB
Bash
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
|
|
}
|