summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2022-08-13 08:07:09 -0400
committerbill-auger <mr.j.spam.me@gmail.com>2022-08-16 08:12:58 -0400
commitdf2a8526000333c6c1b672da577e96adce3522d8 (patch)
tree0e60631928ea262be6ee116e2c40bf42aa10d517
parentb57b71aacb953fa11b37ea8adaf582230017a48f (diff)
housekeeping
-rwxr-xr-xinstall.sh22
-rw-r--r--session-common.sh.inc53
2 files changed, 52 insertions, 23 deletions
diff --git a/install.sh b/install.sh
index 686c404..109ff5e 100755
--- a/install.sh
+++ b/install.sh
@@ -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
}