mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
Split interactive_desktop_main_configuration from /lib/configuration.sh
This commit is contained in:
@@ -69,3 +69,92 @@ desktop_environment_check_if_valid() {
|
||||
|
||||
exit_with_error "${error_msg}"
|
||||
}
|
||||
|
||||
function interactive_desktop_main_configuration() {
|
||||
|
||||
# Myy : Once we got a list of selected groups, parse the PACKAGE_LIST inside configuration.sh
|
||||
DESKTOP_ELEMENTS_DIR="${SRC}/config/desktop/${RELEASE}"
|
||||
DESKTOP_CONFIGS_DIR="${DESKTOP_ELEMENTS_DIR}/environments"
|
||||
DESKTOP_CONFIG_PREFIX="config_"
|
||||
DESKTOP_APPGROUPS_DIR="${DESKTOP_ELEMENTS_DIR}/appgroups"
|
||||
|
||||
if [[ $BUILD_DESKTOP == "yes" && -z $DESKTOP_ENVIRONMENT ]]; then
|
||||
|
||||
options=()
|
||||
desktop_environments_prepare_menu
|
||||
|
||||
if [[ "${options[0]}" == "" ]]; then
|
||||
exit_with_error "No desktop environment seems to be available for your board ${BOARD} (ARCH : ${ARCH} - EXPERT : ${EXPERT})"
|
||||
fi
|
||||
|
||||
DESKTOP_ENVIRONMENT=$(show_menu "Choose a desktop environment" "$backtitle" "Select the default desktop environment to bundle with this image" "${options[@]}")
|
||||
|
||||
unset options
|
||||
|
||||
if [[ -z "${DESKTOP_ENVIRONMENT}" ]]; then
|
||||
exit_with_error "No desktop environment selected..."
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if [[ $BUILD_DESKTOP == "yes" ]]; then
|
||||
# Expected environment variables :
|
||||
# - options
|
||||
# - ARCH
|
||||
|
||||
DESKTOP_ENVIRONMENT_DIRPATH="${DESKTOP_CONFIGS_DIR}/${DESKTOP_ENVIRONMENT}"
|
||||
|
||||
desktop_environment_check_if_valid
|
||||
fi
|
||||
|
||||
if [[ $BUILD_DESKTOP == "yes" && -z $DESKTOP_ENVIRONMENT_CONFIG_NAME ]]; then
|
||||
# FIXME Check for empty folders, just in case the current maintainer
|
||||
# messed up
|
||||
# Note, we could also ignore it and don't show anything in the previous
|
||||
# menu, but that hides information and make debugging harder, which I
|
||||
# don't like. Adding desktop environments as a maintainer is not a
|
||||
# trivial nor common task.
|
||||
|
||||
options=()
|
||||
for configuration in "${DESKTOP_ENVIRONMENT_DIRPATH}/${DESKTOP_CONFIG_PREFIX}"*; do
|
||||
config_filename=$(basename ${configuration})
|
||||
config_name=${config_filename#"${DESKTOP_CONFIG_PREFIX}"}
|
||||
options+=("${config_filename}" "${config_name} configuration")
|
||||
done
|
||||
|
||||
DESKTOP_ENVIRONMENT_CONFIG_NAME=$(show_menu "Choose the desktop environment config" "$backtitle" "Select the configuration for this environment.\nThese are sourced from ${desktop_environment_config_dir}" "${options[@]}")
|
||||
unset options
|
||||
|
||||
if [[ -z $DESKTOP_ENVIRONMENT_CONFIG_NAME ]]; then
|
||||
exit_with_error "No desktop configuration selected... Do you really want a desktop environment ?"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $BUILD_DESKTOP == "yes" ]]; then
|
||||
DESKTOP_ENVIRONMENT_PACKAGE_LIST_DIRPATH="${DESKTOP_ENVIRONMENT_DIRPATH}/${DESKTOP_ENVIRONMENT_CONFIG_NAME}"
|
||||
DESKTOP_ENVIRONMENT_PACKAGE_LIST_FILEPATH="${DESKTOP_ENVIRONMENT_PACKAGE_LIST_DIRPATH}/packages"
|
||||
fi
|
||||
|
||||
# "-z ${VAR+x}" allows to check for unset variable
|
||||
# Technically, someone might want to build a desktop with no additional
|
||||
# appgroups.
|
||||
if [[ $BUILD_DESKTOP == "yes" && -z ${DESKTOP_APPGROUPS_SELECTED+x} ]]; then
|
||||
|
||||
options=()
|
||||
for appgroup_path in "${DESKTOP_APPGROUPS_DIR}/"*; do
|
||||
appgroup="$(basename "${appgroup_path}")"
|
||||
options+=("${appgroup}" "${appgroup^}" off)
|
||||
done
|
||||
|
||||
DESKTOP_APPGROUPS_SELECTED=$(
|
||||
show_select_menu \
|
||||
"Choose desktop softwares to add" \
|
||||
"$backtitle" \
|
||||
"Select which kind of softwares you'd like to add to your build" \
|
||||
"${options[@]}"
|
||||
)
|
||||
|
||||
unset options
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user