diff options
author | bill-auger <mr.j.spam.me@gmail.com> | 2022-08-13 08:07:09 -0400 |
---|---|---|
committer | bill-auger <mr.j.spam.me@gmail.com> | 2022-08-16 08:12:58 -0400 |
commit | df2a8526000333c6c1b672da577e96adce3522d8 (patch) | |
tree | 0e60631928ea262be6ee116e2c40bf42aa10d517 | |
parent | b57b71aacb953fa11b37ea8adaf582230017a48f (diff) |
housekeeping
-rwxr-xr-x | install.sh | 22 | ||||
-rw-r--r-- | session-common.sh.inc | 53 |
2 files changed, 52 insertions, 23 deletions
@@ -409,7 +409,7 @@ SelectPartition() fi # query disk device information - PopulateDisksOptions # populates DlgParams + PopulateDisksOptions # populates $DlgParams (( ${#DlgParams[@]} )) || ExitFail "${TR[device_none-${Lang}]}" # prompt for disk device @@ -588,16 +588,16 @@ InstallPkgs() [[ -n "$(GetStateVar 'BOOT' )" ]] [[ -n "$(GetStateVar 'WMDE' )" ]] - local conf_regex=$( [[ "${init}" == 'openrc' ]] && echo "$PACCONF_NONSYSTEMD_REGEX" || \ - echo "$PACCONF_SYSTEMD_REGEX" ) - local install=$( GetStateVar 'INSTALL') - local base_set=$( GetStateVar 'BASE' ) local init=$( GetStateVar 'INIT' ) + local base_set=$( GetStateVar 'BASE' ) local bootloader=$(GetStateVar 'BOOT' ) local wmde=$( GetStateVar 'WMDE' ) - local base_packages="${BASE_PACKAGES[${base_set}]}" - local boot_packages="${BOOT_PACKAGES[${bootloader}]}" - local gui_packages="${GUI_PACKAGES[${wmde}]}" + local install=$( GetStateVar 'INSTALL') + local conf_regex=$( [[ "${init}" == 'openrc' ]] && echo "$PACCONF_NONSYSTEMD_REGEX" || \ + echo "$PACCONF_SYSTEMD_REGEX" ) + local packages=( ${BASE_PACKAGES[${base_set}]} \ + ${BOOT_PACKAGES[${bootloader}]} \ + ${GUI_PACKAGES[${wmde}]} ) # prepare pacman.conf for online/offline install, systemd/non-systemd if [[ "${install}" == 'offline' ]] @@ -617,19 +617,19 @@ InstallPkgs() ConfigChroot() { # sanity checks - [[ -n "$(GetStateVar 'HOSTNAME' )" ]] # chroot-environment.sh dependencies + [[ -n "$(GetStateVar 'HOSTNAME' )" ]] # chroot-environment.sh [[ -n "$(GetStateVar 'TIMEZONE' )" ]] [[ -n "$(GetStateVar 'KEYMAP' )" ]] [[ -n "$(GetStateVar 'LOCALES' )" ]] [[ -n "$(GetStateVar 'LANG' )" ]] [[ -n "$(GetStateVar 'BOOT' )" ]] [[ -n "$(GetStateVar 'DEVICE' )" ]] - [[ -n "$(GetStateVar 'ROOT_PASS' )" ]] # chroot-login.sh dependencies + [[ -n "$(GetStateVar 'ROOT_PASS' )" ]] # chroot-login.sh [[ -n "$(GetStateVar 'USER_LOGIN')" ]] [[ -n "$(GetStateVar 'USER_PASS' )" ]] [[ -n "$(GetStateVar 'XKBMAP' )" ]] [[ -n "$(GetStateVar 'WMDE' )" ]] - [[ -n "$(GetStateVar 'INIT' )" ]] # chroot-services.sh dependencies + [[ -n "$(GetStateVar 'INIT' )" ]] # chroot-services.sh [[ -n "$(GetStateVar 'WMDE' )" ]] # copy helper scripts into the chroot and execute them in-chroot diff --git a/session-common.sh.inc b/session-common.sh.inc index 4859d01..e52304e 100644 --- a/session-common.sh.inc +++ b/session-common.sh.inc @@ -164,13 +164,6 @@ WizardDlg() # (title box_type boxargs* options*) return ${status} } -ValidateId() # (login) -{ - local login="$*" - - [[ "${login}" =~ ^[[:space:]]*[^[:space:]]+[[:space:]]*$ ]] # TODO: improve this -} - ExitFail() # ("exit_msg") { echo "$@" > "${THIS_DIR}"/exit-fail.txt @@ -180,6 +173,16 @@ ExitFail() # ("exit_msg") } +## input validation helpers ## + +ValidateId() # (login) +{ + local login="$*" + + [[ "${login}" =~ ^[[:space:]]*[^[:space:]]+[[:space:]]*$ ]] # TODO: improve this +} + + ## partitioning helpers ## readonly DISK_RECORD_SEP='|' @@ -201,7 +204,9 @@ GetDisksPartsData() # /dev/sda:1074MB:scsi:512:512:gpt:ATA QEMU HARDDISK:; # QEMU device # 1:1049kB:106MB:105MB:ext4::; # EXT4 partition # 2:106MB:211MB:105MB:::; # un-formatted partition - # # <-- ~800MB unallocated space + # 3:211MB:316MB:105MB:::swap; # un-formatted swap partition + # 4:316MB:421MB:105MB:linux-swap(v1)::swap; # formatted swap partition + # # <-- ~600MB unallocated space # # example parted output (MBR): # BYT; @@ -229,6 +234,17 @@ GetDisksPartsData() # example GetDisksPartsData() output: # /dev/sda:1074MB|/dev/sda1:105MB:ext4|/dev/sda2:105MB # /dev/sdb:250GB|/dev/sdb1:524MB:ntfs|/dev/sdb2:20.0GB:ntfs|/dev/sdb4:228GB:|/dev/sdb3:1049MB:ntfs + # + # TODO: the above knowledge could be encapsulated as test mock data + # * make GetDisksPartsData() store into a cache instead of returning results + # * call GetDisksPartsData() only once + # * replace GetDisksPartsData() in callers with the cache + # * write a test suite against these partitioning helpers, + # mocking the GetDisksPartsData() cache with the data above + # * capture the 7th field (partition type) + # * allow automatically format un-formatted swap partitions in Partition() + # + # TODO: filter out mounted filesystems parted --list --machine 2> /dev/null | tr -d '\r' | \ while read line @@ -253,6 +269,9 @@ GetDisksPartsData() GetDiskData() # (disk_data_n) { + # example GetDiskData() output: + # /dev/sda 42.9GB + if [[ "$1" =~ ^[0-9]+$ ]] then local disk_data_n=$1 local disks_parts_data=( $(GetDisksPartsData) ) @@ -264,6 +283,9 @@ GetDiskData() # (disk_data_n) GetDiskPartsData() # (disk_data_n) { + # example GetDiskPartsData() output: + # /dev/sdb1:968MB:ext4 /dev/sdb2:105MB:linux-swap(v1) + local disk_data_n=$1 local disks_parts_data=( $(GetDisksPartsData) ) local disk_parts_data=${disks_parts_data[${disk_data_n}]#*${DISK_RECORD_SEP}} @@ -273,16 +295,22 @@ GetDiskPartsData() # (disk_data_n) GetDiskPartData() # (disk_data_n part_data_n) { + # example GetDiskPartData() output: + # /dev/sdb1 968MB ext4 + local disk_data_n=$1 local part_data_n=$2 local disk_parts_data=( $(GetDiskPartsData ${disk_data_n}) ) - local disk_parts_data=${disk_parts_data[${part_data_n}]} + local disk_part_data=${disk_parts_data[${part_data_n}]} - tr "${DISK_FIELD_SEP}" ' ' <<<${disk_parts_data} + tr "${DISK_FIELD_SEP}" ' ' <<<${disk_part_data} } GetDevice() # (disk_data_n) { + # example GetDevice() output: + # /dev/sda + local disk_data_n=$1 local disk_data=$(GetDiskData ${disk_data_n}) local device=${disk_data/ *} @@ -318,7 +346,7 @@ PopulateDisksOptions() # sets $DlgParams local disk_data_n DlgParams=() - # populate params array for dialog - example output: + # populate params array for dialog - example DlgParams: # ( 1 "/dev/sda 42.9GB" 2 "/dev/sdb 9664MB" ) for (( disk_data_n=0 ; disk_data_n < ${#disks_part_data[@]} ; ++disk_data_n )) do DlgParams+=( $(( ${disk_data_n} + 1 )) "$(GetDiskData ${disk_data_n})" ) @@ -333,13 +361,14 @@ PopulatePartOptions() # sets $DlgParams, assumes $PartsData # populate params array for dialog - example DlgParams: # ( 1 "/dev/sdb1 9662MB ext4" 2 "/dev/sdb2 1048kB" ) for part_data_n in $(tr ' ' '\n' <<<${!PartsData[@]} | sort) - do DlgParams+=( ${part_data_n} "${PartsData[${part_data_n}]}" ) + do DlgParams+=( ${part_data_n} "${PartsData[${part_data_n}]}" ) done } RemovePartOption() # (part_n) # modifies $PartsData { local dlg_part_n=$1 + unset 'PartsData['"${dlg_part_n}"']' PopulatePartOptions } |