mirror of
https://github.com/RROrg/rr.git
synced 2025-06-21 05:51:05 +08:00
Merge pull request #384 from fbelavenuto/new-menu-adv
Adding a "advanced menu"
This commit is contained in:
commit
43a3264c8d
@ -529,85 +529,6 @@ function synoinfoMenu() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Permit user select the modules to include
|
|
||||||
function selectModules() {
|
|
||||||
PLATFORM="`readModelKey "${MODEL}" "platform"`"
|
|
||||||
KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`"
|
|
||||||
dialog --backtitle "`backtitle`" --title "Modules" --aspect 18 \
|
|
||||||
--infobox "Reading modules" 0 0
|
|
||||||
ALLMODULES=`getAllModules "${PLATFORM}" "${KVER}"`
|
|
||||||
unset USERMODULES
|
|
||||||
declare -A USERMODULES
|
|
||||||
while IFS="=" read KEY VALUE; do
|
|
||||||
[ -n "${KEY}" ] && USERMODULES["${KEY}"]="${VALUE}"
|
|
||||||
done < <(readConfigMap "modules" "${USER_CONFIG_FILE}")
|
|
||||||
# menu loop
|
|
||||||
while true; do
|
|
||||||
dialog --backtitle "`backtitle`" --menu "Choose a option" 0 0 0 \
|
|
||||||
s "Show selected modules" \
|
|
||||||
a "Select all modules" \
|
|
||||||
d "Deselect all modules" \
|
|
||||||
c "Choose modules to include" \
|
|
||||||
e "Exit" \
|
|
||||||
2>${TMP_PATH}/resp
|
|
||||||
[ $? -ne 0 ] && break
|
|
||||||
case "`<${TMP_PATH}/resp`" in
|
|
||||||
s) ITEMS=""
|
|
||||||
for KEY in ${!USERMODULES[@]}; do
|
|
||||||
ITEMS+="${KEY}: ${USERMODULES[$KEY]}\n"
|
|
||||||
done
|
|
||||||
dialog --backtitle "`backtitle`" --title "User modules" \
|
|
||||||
--msgbox "${ITEMS}" 0 0
|
|
||||||
;;
|
|
||||||
a) dialog --backtitle "`backtitle`" --title "Modules" \
|
|
||||||
--infobox "Selecting all modules" 0 0
|
|
||||||
unset USERMODULES
|
|
||||||
declare -A USERMODULES
|
|
||||||
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
|
|
||||||
while read ID DESC; do
|
|
||||||
USERMODULES["${ID}"]=""
|
|
||||||
writeConfigKey "modules.${ID}" "" "${USER_CONFIG_FILE}"
|
|
||||||
done <<<${ALLMODULES}
|
|
||||||
;;
|
|
||||||
|
|
||||||
d) dialog --backtitle "`backtitle`" --title "Modules" \
|
|
||||||
--infobox "Deselecting all modules" 0 0
|
|
||||||
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
|
|
||||||
unset USERMODULES
|
|
||||||
declare -A USERMODULES
|
|
||||||
;;
|
|
||||||
|
|
||||||
c)
|
|
||||||
rm -f "${TMP_PATH}/opts"
|
|
||||||
while read ID DESC; do
|
|
||||||
arrayExistItem "${ID}" "${!USERMODULES[@]}" && ACT="on" || ACT="off"
|
|
||||||
echo "${ID} ${DESC} ${ACT}" >> "${TMP_PATH}/opts"
|
|
||||||
done <<<${ALLMODULES}
|
|
||||||
dialog --backtitle "`backtitle`" --title "Modules" --aspect 18 \
|
|
||||||
--checklist "Select modules to include" 0 0 0 \
|
|
||||||
--file "${TMP_PATH}/opts" 2>${TMP_PATH}/resp
|
|
||||||
[ $? -ne 0 ] && continue
|
|
||||||
resp=$(<${TMP_PATH}/resp)
|
|
||||||
[ -z "${resp}" ] && continue
|
|
||||||
dialog --backtitle "`backtitle`" --title "Modules" \
|
|
||||||
--infobox "Writing to user config" 0 0
|
|
||||||
unset USERMODULES
|
|
||||||
declare -A USERMODULES
|
|
||||||
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
|
|
||||||
for ID in ${resp}; do
|
|
||||||
USERMODULES["${ID}"]=""
|
|
||||||
writeConfigKey "modules.${ID}" "" "${USER_CONFIG_FILE}"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
|
|
||||||
e)
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Extract linux and ramdisk files from the DSM .pat
|
# Extract linux and ramdisk files from the DSM .pat
|
||||||
function extractDsmFiles() {
|
function extractDsmFiles() {
|
||||||
@ -819,14 +740,119 @@ function make() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Calls boot.sh to boot into DSM kernel/ramdisk
|
# Advanced menu
|
||||||
function boot() {
|
function advancedMenu() {
|
||||||
[ ${DIRTY} -eq 1 ] && dialog --backtitle "`backtitle`" --title "Alert" \
|
NEXT="l"
|
||||||
--yesno "Config changed, would you like to rebuild the loader?" 0 0
|
while true; do
|
||||||
if [ $? -eq 0 ]; then
|
rm "${TMP_PATH}/menu"
|
||||||
make || return
|
if [ -n "${BUILD}" ]; then
|
||||||
fi
|
echo "l \"Switch LKM version: \Z4${LKM}\Zn\"" >> "${TMP_PATH}/menu"
|
||||||
boot.sh
|
echo "o \"Modules\"" >> "${TMP_PATH}/menu"
|
||||||
|
fi
|
||||||
|
if loaderIsConfigured; then
|
||||||
|
echo "r \"Switch direct boot: \Z4${DIRECTBOOT}\Zn\"" >> "${TMP_PATH}/menu"
|
||||||
|
fi
|
||||||
|
echo "u \"Edit user config file manually\"" >> "${TMP_PATH}/menu"
|
||||||
|
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
|
||||||
|
|
||||||
|
dialog --default-item ${NEXT} --backtitle "`backtitle`" --title "Advanced" \
|
||||||
|
--colors --menu "Choose the option" 0 0 0 --file "${TMP_PATH}/menu" \
|
||||||
|
2>${TMP_PATH}/resp
|
||||||
|
[ $? -ne 0 ] && break
|
||||||
|
case `<"${TMP_PATH}/resp"` in
|
||||||
|
l) [ "${LKM}" = "dev" ] && LKM='prod' || LKM='dev'
|
||||||
|
writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}"
|
||||||
|
DIRTY=1
|
||||||
|
NEXT="o"
|
||||||
|
;;
|
||||||
|
o) selectModules; NEXT="r" ;;
|
||||||
|
r) [ "${DIRECTBOOT}" = "false" ] && DIRECTBOOT='true' || DIRECTBOOT='false'
|
||||||
|
writeConfigKey "directboot" "${DIRECTBOOT}" "${USER_CONFIG_FILE}"
|
||||||
|
NEXT="u"
|
||||||
|
;;
|
||||||
|
u) editUserConfig; NEXT="e" ;;
|
||||||
|
e) break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Permit user select the modules to include
|
||||||
|
function selectModules() {
|
||||||
|
PLATFORM="`readModelKey "${MODEL}" "platform"`"
|
||||||
|
KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`"
|
||||||
|
dialog --backtitle "`backtitle`" --title "Modules" --aspect 18 \
|
||||||
|
--infobox "Reading modules" 0 0
|
||||||
|
ALLMODULES=`getAllModules "${PLATFORM}" "${KVER}"`
|
||||||
|
unset USERMODULES
|
||||||
|
declare -A USERMODULES
|
||||||
|
while IFS="=" read KEY VALUE; do
|
||||||
|
[ -n "${KEY}" ] && USERMODULES["${KEY}"]="${VALUE}"
|
||||||
|
done < <(readConfigMap "modules" "${USER_CONFIG_FILE}")
|
||||||
|
# menu loop
|
||||||
|
while true; do
|
||||||
|
dialog --backtitle "`backtitle`" --menu "Choose a option" 0 0 0 \
|
||||||
|
s "Show selected modules" \
|
||||||
|
a "Select all modules" \
|
||||||
|
d "Deselect all modules" \
|
||||||
|
c "Choose modules to include" \
|
||||||
|
e "Exit" \
|
||||||
|
2>${TMP_PATH}/resp
|
||||||
|
[ $? -ne 0 ] && break
|
||||||
|
case "`<${TMP_PATH}/resp`" in
|
||||||
|
s) ITEMS=""
|
||||||
|
for KEY in ${!USERMODULES[@]}; do
|
||||||
|
ITEMS+="${KEY}: ${USERMODULES[$KEY]}\n"
|
||||||
|
done
|
||||||
|
dialog --backtitle "`backtitle`" --title "User modules" \
|
||||||
|
--msgbox "${ITEMS}" 0 0
|
||||||
|
;;
|
||||||
|
a) dialog --backtitle "`backtitle`" --title "Modules" \
|
||||||
|
--infobox "Selecting all modules" 0 0
|
||||||
|
unset USERMODULES
|
||||||
|
declare -A USERMODULES
|
||||||
|
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
|
||||||
|
while read ID DESC; do
|
||||||
|
USERMODULES["${ID}"]=""
|
||||||
|
writeConfigKey "modules.${ID}" "" "${USER_CONFIG_FILE}"
|
||||||
|
done <<<${ALLMODULES}
|
||||||
|
;;
|
||||||
|
|
||||||
|
d) dialog --backtitle "`backtitle`" --title "Modules" \
|
||||||
|
--infobox "Deselecting all modules" 0 0
|
||||||
|
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
|
||||||
|
unset USERMODULES
|
||||||
|
declare -A USERMODULES
|
||||||
|
;;
|
||||||
|
|
||||||
|
c)
|
||||||
|
rm -f "${TMP_PATH}/opts"
|
||||||
|
while read ID DESC; do
|
||||||
|
arrayExistItem "${ID}" "${!USERMODULES[@]}" && ACT="on" || ACT="off"
|
||||||
|
echo "${ID} ${DESC} ${ACT}" >> "${TMP_PATH}/opts"
|
||||||
|
done <<<${ALLMODULES}
|
||||||
|
dialog --backtitle "`backtitle`" --title "Modules" --aspect 18 \
|
||||||
|
--checklist "Select modules to include" 0 0 0 \
|
||||||
|
--file "${TMP_PATH}/opts" 2>${TMP_PATH}/resp
|
||||||
|
[ $? -ne 0 ] && continue
|
||||||
|
resp=$(<${TMP_PATH}/resp)
|
||||||
|
[ -z "${resp}" ] && continue
|
||||||
|
dialog --backtitle "`backtitle`" --title "Modules" \
|
||||||
|
--infobox "Writing to user config" 0 0
|
||||||
|
unset USERMODULES
|
||||||
|
declare -A USERMODULES
|
||||||
|
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
|
||||||
|
for ID in ${resp}; do
|
||||||
|
USERMODULES["${ID}"]=""
|
||||||
|
writeConfigKey "modules.${ID}" "" "${USER_CONFIG_FILE}"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
e)
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -855,6 +881,17 @@ function editUserConfig() {
|
|||||||
DIRTY=1
|
DIRTY=1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Calls boot.sh to boot into DSM kernel/ramdisk
|
||||||
|
function boot() {
|
||||||
|
[ ${DIRTY} -eq 1 ] && dialog --backtitle "`backtitle`" --title "Alert" \
|
||||||
|
--yesno "Config changed, would you like to rebuild the loader?" 0 0
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
make || return
|
||||||
|
fi
|
||||||
|
boot.sh
|
||||||
|
}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Shows available keymaps to user choose one
|
# Shows available keymaps to user choose one
|
||||||
function keymapMenu() {
|
function keymapMenu() {
|
||||||
@ -971,6 +1008,7 @@ function updateMenu() {
|
|||||||
unzip /tmp/addons.zip -d /tmp/addons >/dev/null 2>&1
|
unzip /tmp/addons.zip -d /tmp/addons >/dev/null 2>&1
|
||||||
dialog --backtitle "`backtitle`" --title "Update addons" --aspect 18 \
|
dialog --backtitle "`backtitle`" --title "Update addons" --aspect 18 \
|
||||||
--infobox "Installing new addons" 0 0
|
--infobox "Installing new addons" 0 0
|
||||||
|
rm -Rf "${ADDONS_PATH}/"*
|
||||||
for PKG in `ls /tmp/addons/*.addon`; do
|
for PKG in `ls /tmp/addons/*.addon`; do
|
||||||
ADDON=`basename ${PKG} | sed 's|.addon||'`
|
ADDON=`basename ${PKG} | sed 's|.addon||'`
|
||||||
rm -rf "${ADDONS_PATH}/${ADDON}"
|
rm -rf "${ADDONS_PATH}/${ADDON}"
|
||||||
@ -1067,21 +1105,21 @@ while true; do
|
|||||||
echo "a \"Addons\"" >> "${TMP_PATH}/menu"
|
echo "a \"Addons\"" >> "${TMP_PATH}/menu"
|
||||||
echo "x \"Cmdline menu\"" >> "${TMP_PATH}/menu"
|
echo "x \"Cmdline menu\"" >> "${TMP_PATH}/menu"
|
||||||
echo "i \"Synoinfo menu\"" >> "${TMP_PATH}/menu"
|
echo "i \"Synoinfo menu\"" >> "${TMP_PATH}/menu"
|
||||||
echo "l \"Switch LKM version: \Z4${LKM}\Zn\"" >> "${TMP_PATH}/menu"
|
|
||||||
echo "o \"Modules\"" >> "${TMP_PATH}/menu"
|
|
||||||
echo "d \"Build the loader\"" >> "${TMP_PATH}/menu"
|
echo "d \"Build the loader\"" >> "${TMP_PATH}/menu"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
echo "v \"Advanced menu\"" >> "${TMP_PATH}/menu"
|
||||||
if loaderIsConfigured; then
|
if loaderIsConfigured; then
|
||||||
echo "r \"Switch direct boot: \Z4${DIRECTBOOT}\Zn\"">> "${TMP_PATH}/menu"
|
|
||||||
echo "b \"Boot the loader\" " >> "${TMP_PATH}/menu"
|
echo "b \"Boot the loader\" " >> "${TMP_PATH}/menu"
|
||||||
fi
|
fi
|
||||||
echo "u \"Edit user config file manually\"" >> "${TMP_PATH}/menu"
|
|
||||||
echo "k \"Choose a keymap\" " >> "${TMP_PATH}/menu"
|
echo "k \"Choose a keymap\" " >> "${TMP_PATH}/menu"
|
||||||
[ ${CLEARCACHE} -eq 0 -a -d "${CACHE_PATH}/dl" ] && echo "c \"Clean disk cache\"" >> "${TMP_PATH}/menu"
|
if [ ${CLEARCACHE} -eq 0 -a -d "${CACHE_PATH}/dl" ]; then
|
||||||
|
echo "c \"Clean disk cache\"" >> "${TMP_PATH}/menu"
|
||||||
|
fi
|
||||||
echo "p \"Update menu\"" >> "${TMP_PATH}/menu"
|
echo "p \"Update menu\"" >> "${TMP_PATH}/menu"
|
||||||
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
|
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
|
||||||
dialog --clear --default-item ${NEXT} --backtitle "`backtitle`" --colors \
|
|
||||||
|
dialog --default-item ${NEXT} --backtitle "`backtitle`" --colors \
|
||||||
--menu "Choose the option" 0 0 0 --file "${TMP_PATH}/menu" \
|
--menu "Choose the option" 0 0 0 --file "${TMP_PATH}/menu" \
|
||||||
2>${TMP_PATH}/resp
|
2>${TMP_PATH}/resp
|
||||||
[ $? -ne 0 ] && break
|
[ $? -ne 0 ] && break
|
||||||
@ -1091,20 +1129,10 @@ while true; do
|
|||||||
s) serialMenu; NEXT="a" ;;
|
s) serialMenu; NEXT="a" ;;
|
||||||
a) addonMenu; NEXT="x" ;;
|
a) addonMenu; NEXT="x" ;;
|
||||||
x) cmdlineMenu; NEXT="i" ;;
|
x) cmdlineMenu; NEXT="i" ;;
|
||||||
i) synoinfoMenu; NEXT="l" ;;
|
i) synoinfoMenu; NEXT="d" ;;
|
||||||
l) [ "${LKM}" = "dev" ] && LKM='prod' || LKM='dev'
|
d) make; NEXT="v" ;;
|
||||||
writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}"
|
v) advancedMenu; NEXT="b" ;;
|
||||||
DIRTY=1
|
|
||||||
NEXT="o"
|
|
||||||
;;
|
|
||||||
o) selectModules; NEXT="d" ;;
|
|
||||||
d) make; NEXT="r" ;;
|
|
||||||
r) [ "${DIRECTBOOT}" = "false" ] && DIRECTBOOT='true' || DIRECTBOOT='false'
|
|
||||||
writeConfigKey "directboot" "${DIRECTBOOT}" "${USER_CONFIG_FILE}"
|
|
||||||
NEXT="b"
|
|
||||||
;;
|
|
||||||
b) boot ;;
|
b) boot ;;
|
||||||
u) editUserConfig; NEXT="u" ;;
|
|
||||||
k) keymapMenu ;;
|
k) keymapMenu ;;
|
||||||
c) dialog --backtitle "`backtitle`" --title "Cleaning" --aspect 18 \
|
c) dialog --backtitle "`backtitle`" --title "Cleaning" --aspect 18 \
|
||||||
--prgbox "rm -rfv \"${CACHE_PATH}/dl\"" 0 0 ;;
|
--prgbox "rm -rfv \"${CACHE_PATH}/dl\"" 0 0 ;;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user