Revert "Merge branch 'rescue' into master"
This reverts commitmerge-requests/260/headc90e917768
, reversing changes made tof565608971
.
parent
c90e917768
commit
8a89d305b2
@ -1,29 +0,0 @@
|
||||
#!menu template
|
||||
# rescur menu tree
|
||||
|
||||
--rescue
|
||||
----mount ;mount_test_efi
|
||||
------root ; mount_partition /
|
||||
--------back ; mnu_return 97
|
||||
------home ; mount_partition /home
|
||||
--------back ; mnu_return 97
|
||||
----InstBs ; check_mount ;
|
||||
------Mirrorlisting
|
||||
------refresh keys
|
||||
------InstBse
|
||||
------bootloader
|
||||
------done ; mnu_return 97
|
||||
----ConfBse ; check_mount
|
||||
------fstab
|
||||
------hostname
|
||||
------locale
|
||||
------time and date
|
||||
------root_pw
|
||||
------create user
|
||||
------mkinitcpio
|
||||
---video_driver ; workfunction_videod
|
||||
---xkbmap ; workfunction_x
|
||||
----edit_config ; check_menu_edit_config_begin
|
||||
------init config
|
||||
------pacman.conf ; nano /etc/pacman.conf
|
||||
------bash ; nano /tmp/bashrc
|
@ -1,266 +0,0 @@
|
||||
#!/usr/bin/bash
|
||||
#
|
||||
# load layout and show dialogs
|
||||
|
||||
debug(){
|
||||
:
|
||||
}
|
||||
|
||||
|
||||
returnOK(){ return 0; } # function is ok
|
||||
|
||||
|
||||
dialog_menu() {
|
||||
# add : --keep-tite to aif version
|
||||
dialog --keep-tite --backtitle "$VERSION - $SYSTEM ($ARCHI)" --column-separator "|" --title "$@"
|
||||
}
|
||||
|
||||
#pick in .transfile
|
||||
# file .trans not standard -> tinker for demo
|
||||
# 2 args : keymenu , content(Title or Body or Item? or empty_value)
|
||||
# tt( keymenu , content='Title' )
|
||||
tt() {
|
||||
local str="" content="${2:-Title}"
|
||||
str="_${1}Menu${content}"
|
||||
if [ ! -v "$str" ]; then # var not exist ?
|
||||
str="_${1}${content}"
|
||||
fi
|
||||
if [ ! -v "$str" ]; then # var exist ?
|
||||
[ "$2" != "Body" ] && str="$1" || str=""
|
||||
else
|
||||
str="${!str}"
|
||||
if [ -z "$str" ]; then # error in .trans ?
|
||||
[ "$2" != "Body" ] && str="$1" || str=""
|
||||
fi
|
||||
fi
|
||||
[[ "$content" == 'Body' && "$str" != '' ]] && str="\n${str} \n "
|
||||
echo "$str"
|
||||
}
|
||||
|
||||
# trim line with ; as separator
|
||||
trim_line()
|
||||
{
|
||||
local i=0 str='' arrayr=()
|
||||
IFS=';' arrayr=($1)
|
||||
for i in "${!arrayr[@]}"; do
|
||||
# remove firsts space
|
||||
arrayr[$i]="${arrayr[$i]#"${arrayr[$i]%%[![:space:]]*}"}"
|
||||
# remove lasts space
|
||||
while [[ "${arrayr[$i]: -1}" == ' ' ]]; do
|
||||
arrayr[$i]=${arrayr[$i]:0:-1}
|
||||
done
|
||||
done
|
||||
echo "${arrayr[*]}"
|
||||
}
|
||||
|
||||
# not used
|
||||
split_line(){ IFS=';' arrayr=($@); }
|
||||
|
||||
# trim line menu layout
|
||||
menu_split_line(){
|
||||
local str="$@"
|
||||
[ -z "$str" ] && exit 9
|
||||
trim_line "${str//-}"
|
||||
}
|
||||
|
||||
# find item in dialog array by key
|
||||
# menu_item_find ( key='' )
|
||||
# return line number, 255 not found
|
||||
menu_item_find() {
|
||||
[ -z "$1" ] && return 1
|
||||
local id=0 i=0
|
||||
for i in "${!options[@]}"; do
|
||||
if [[ "${options[$i]}" == "$1" ]]; then
|
||||
(( id= (i-1) /2 ))
|
||||
echo "$id" && return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
# change or delete item menu
|
||||
# menu_item_change ( key='' , caption='', callfunction='' )
|
||||
# only param "key" -> remove item
|
||||
menu_item_change() {
|
||||
#set -x
|
||||
local key="$1" id=255
|
||||
id=$(menu_item_find "$key")
|
||||
(($? != 0)) && return 1
|
||||
#[ -z "$id" ] && return 1
|
||||
if [[ "$2" == '' && "$3" == '' ]]; then
|
||||
unset functions[$id]
|
||||
functions=( "${functions[@]}" )
|
||||
(( id=(id*2) ))
|
||||
unset options[$((id+1))]; unset options[$id];
|
||||
options=( "${options[@]}" )
|
||||
else
|
||||
[ -n "$3" ] && functions[$id]="$3"
|
||||
(( id=(id*2)+1 ))
|
||||
[ -n "$2" ] && options[$id]="$2"
|
||||
fi
|
||||
}
|
||||
|
||||
# insert item after a key or add item to the end if not found
|
||||
# menu_item_insert ( key_after='', caption, callfunction )
|
||||
menu_item_insert () {
|
||||
local key="$1" id=255
|
||||
id=$(menu_item_find "$key")
|
||||
[ -z "$id" ] && id="${#functions[@]}"
|
||||
[[ "$2" == '' && "$3" == '' ]] && return 1
|
||||
(( id=id+1 ))
|
||||
functions=( "${functions[@]:0:id}" "$3" "${functions[@]:id}" )
|
||||
(( id=id*2 ))
|
||||
options=( "${options[@]:0:id}" "9" "$2" "${options[@]:id}" )
|
||||
}
|
||||
|
||||
####################################################
|
||||
# #parse file data/*.menu
|
||||
# return array
|
||||
####################################################
|
||||
# load_options_menutool( IDmenu , template='default' )
|
||||
|
||||
load_options_menutool() {
|
||||
local menukey="${1:-install_environment}"
|
||||
local tmp=()
|
||||
local localfilename="${2:-default}"
|
||||
local level='' levelsub='' reg loop curentitem i j
|
||||
local IFS=$'\n'
|
||||
debug "\nfind menu: $menukey"
|
||||
options=(); functions=(); fbegin=''; fend='';floop='';
|
||||
|
||||
for line in $(grep -v "#" "$DATADIR/${localfilename}.menu"); do
|
||||
#reg="-.$menukey^[a-zA-Z_;]" #[^a-zA-Z_]"
|
||||
reg="-.${menukey}([ ;]|$)"
|
||||
if [[ $line =~ $reg ]]; then
|
||||
# menu find
|
||||
level=$(echo "$line" | grep -Eo "\-{1,}")
|
||||
levelsub="$level--";
|
||||
# functions check before and after loop
|
||||
line=$(menu_split_line "$line")
|
||||
IFS=';' line=($line)
|
||||
(("${#line[@]}">1)) && fbegin="${line[1]}"
|
||||
(("${#line[@]}">2)) && fend="${line[2]}"
|
||||
(("${#line[@]}">3)) && floop="${line[3]}"
|
||||
debug "key:$menukey find :) ${mnu_params[@]}"
|
||||
continue
|
||||
fi
|
||||
if [ -n "$levelsub" ]; then
|
||||
reg="^$levelsub[a-zA-Z_]"
|
||||
if [[ $line =~ $reg ]]; then
|
||||
# menu item find
|
||||
line=$(menu_split_line "$line")
|
||||
IFS=';' line=($line)
|
||||
IFS=$';\n' line=(${line[*]})
|
||||
curentitem="${line[0]}"
|
||||
|
||||
debug "curitem: $curentitem , function: ${line[1]} "
|
||||
options+=( 0 "$(tt $curentitem Title)" )
|
||||
# attach function to item
|
||||
tmp="${line[1]}"
|
||||
tmp="${tmp:-returnOK}" # for this test
|
||||
functions+=( "${tmp}" )
|
||||
else
|
||||
reg="^$levelsub--[a-zA-Z_]"
|
||||
if [[ $line =~ $reg ]]; then
|
||||
# prev-item load a sub menu
|
||||
functions[-1]="show_menu $curentitem"
|
||||
i=$(( "${#options[@]}"-1 ))
|
||||
tmp="${options[-1]}"
|
||||
[[ "${tmp: -1}" != ">" ]] && options[-1]="${tmp} |>"
|
||||
continue
|
||||
fi
|
||||
reg="^$level[a-zA-Z_]"
|
||||
[[ $line =~ $reg ]] && break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
####################################################
|
||||
# load one menu from template and show dialog
|
||||
####################################################
|
||||
# show_menu ( IDmenu='MM' )
|
||||
|
||||
show_menu()
|
||||
{
|
||||
local cmd id menus choice errcode highlight=1 nbitems=1
|
||||
local fend fbegin floop # check functions
|
||||
local options=() functions=() # menu datas
|
||||
local keymenu="${1:-MM}"
|
||||
|
||||
# reset numbers after delete/insert item
|
||||
renumber_menutool() {
|
||||
local i=0 j=0
|
||||
for i in "${!options[@]}"; do
|
||||
((i % 2==0)) && { ((j=j+1)); options[$i]=$j; }
|
||||
((i=i+1))
|
||||
done
|
||||
}
|
||||
|
||||
load_options_menutool "${keymenu}" "$TEMPLATEMENU"
|
||||
renumber_menutool
|
||||
debug "options: ${options[@]}"
|
||||
debug "functions: ${functions[@]}"
|
||||
|
||||
# call function chech begin
|
||||
if [ -n "${fbegin}" ]; then
|
||||
$fbegin "$keymenu" || return 99
|
||||
renumber_menutool # if insert or delete item
|
||||
fi
|
||||
|
||||
(( nbitems="${#options[@]}" /2 ))
|
||||
((nbitems>20)) && nbitems=20 # show max 20 items
|
||||
|
||||
while ((1)); do
|
||||
cmd=(dialog_menu "$(tt ${keymenu} Title)" --default-item ${highlight} --menu "$(tt ${keymenu} Body)" 0 0 )
|
||||
cmd+=( $nbitems ) # add number of items
|
||||
|
||||
# run dialog options
|
||||
choice=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
|
||||
# ?choice=eval "${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty
|
||||
choice="${choice:-0}"
|
||||
|
||||
case "$choice" in
|
||||
0) return ;; # btn cancel
|
||||
*) debug "\nchoice: $choice" # debug
|
||||
[ -z "$choice" ] && continue
|
||||
((--choice))
|
||||
fn="${functions[$choice]}" # find attach working function to array with 3 column
|
||||
debug "call function: $fn"
|
||||
# or use eval for eval ${fn} if variables $var ? nor secure ?
|
||||
${fn}
|
||||
errcode=$?
|
||||
debug "errcode: $errcode"
|
||||
case "$errcode" in
|
||||
99) : # check_before in sub_menu
|
||||
;;
|
||||
98) : # check_end in sub_menu
|
||||
;;
|
||||
97) : # back - prev menu
|
||||
return 0
|
||||
;;
|
||||
0) :
|
||||
((++choice)) # go to next item if ok
|
||||
highlight=$choice
|
||||
;;
|
||||
*) : # other errors
|
||||
#(( ($choice+1)*2 ))
|
||||
DIALOG " ERROR " --msgbox "\n ${options[(( (--$choice*2)+1 ))]} [errcode:${errcode}] \n " 0 0
|
||||
# return 0 not return
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
|
||||
# call function chech loop
|
||||
if [ -n "${floop}" ]; then
|
||||
$floop "$keymenu" || return 98
|
||||
renumber_menutool # if insert or delete item
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
# call function check end in layout
|
||||
if [ -n "${fend}" ]; then
|
||||
$fend "$keymenu" || return 98
|
||||
fi
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
#!/usr/bin/bash
|
||||
#
|
||||
# mode rescue functions
|
||||
|
||||
# check if efi
|
||||
mount_test_efi() {
|
||||
if [[ "$(ini system.bios)" == "UEFI" ]]; then
|
||||
menu_item_insert "home" "efi/esp" "mount_partition efi"
|
||||
# TODO: autodetect efi and automount ...
|
||||
fi
|
||||
}
|
||||
|
||||
mount_partition() {
|
||||
local p='' s='' i=0
|
||||
menu_item_change "back" # delete
|
||||
|
||||
find_partitions
|
||||
for p in $PARTITIONS; do
|
||||
if ((i % 2==0)); then
|
||||
s="$p"
|
||||
else
|
||||
menu_item_insert "" "$p $s" "mount_part $p $1"
|
||||
fi
|
||||
((i++))
|
||||
done
|
||||
menu_item_insert "" "back" "mnu_return 97"
|
||||
}
|
||||
|
||||
mount_part(){
|
||||
mount_current_partition "$1" "$2"
|
||||
return 0
|
||||
}
|
||||
|
||||
mnu_return(){ return "${1:-98}"; }
|
||||
|
||||
#change item and function from param
|
||||
check_menu_edit_config_begin(){
|
||||
if [[ "${ARGS[init]}" == "systemd" ]]; then
|
||||
menu_item_change "init config" "systemd configuration" "nano /etc/${ARGS[init]}/system.conf"
|
||||
else
|
||||
menu_item_change "init config" "openrc configuration" "nano /etc/rc.conf"
|
||||
fi
|
||||
|
||||
if ((ARGS[remove])); then
|
||||
menu_item_change "pacman.conf" # no args = remove
|
||||
fi
|
||||
|
||||
# tests
|
||||
menu_item_insert "pacman.conf" "test insert" "nano test_insert"
|
||||
menu_item_insert "" "last item" "nano test_add"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
check_menu_is_mounted(){
|
||||
if [[ "${INSTALL[mounted]}" != 1 ]]; then
|
||||
DIALOG " error " --msgbox "\n make mount in pre-install before\n" 0 0
|
||||
return "${1:-98}"
|
||||
fi
|
||||
}
|
Loading…
Reference in New Issue