Compare commits

...

4 Commits

Author SHA1 Message Date
everyone 1fb3415e2f
fix 2023-11-13 21:25:03 -08:00
everyone 72054dd06b
prompt user if they want to continue 2023-11-13 21:24:36 -08:00
everyone 14366c7eac
prompt for root password 2023-11-13 21:14:50 -08:00
everyone f46f7f83b0
add prompt verification 2023-11-13 21:14:02 -08:00
1 changed files with 65 additions and 14 deletions

View File

@ -5,12 +5,40 @@ eprintln() {
cat <<<"$@" 1>&2
}
join_by() {
local d=${1-} f=${2-}
if shift 2; then
printf %s "$f" "${@/#/$d}"
fi
}
prompt() {
variable=$1
default=$2
prompt=$3
echo "$prompt"
read -rep "> " -i "$default" "${variable?}"
variable="$1"
shift
default="$1"
shift
prompt="$1"
shift
requiments=("$@")
[[ -z "${requiments[*]}" ]] && {
printf "<prompt> requires an array of requirements"
exit 1
}
if [[ "${requiments[0]}" == "null" ]]; then
printf "\n%s\n" "$prompt"
read -rep "> " -i "$default" "${variable?}"
else
# shellcheck disable=SC2086,SC2048
printf "\n%s (Accepted values: %s)\n" "$prompt" "$(join_by ' | ' ${requiments[*]})"
while :; do
read -rep "> " -i "$default" "${variable?}"
[[ "${requiments[0]}" == "null" ]] && break
[[ -n ${!variable} && ${requiments[*]} =~ ${!variable} ]] && break
printf "Invalid option\n"
done
fi
}
@ -35,24 +63,47 @@ _is_uefi=$([[ -f /sys/firmware/efi/fw_platform_size ]] && echo 1 || echo 0)
## Disk info
mapfile -t devices < <(lsblk --paths --output NAME,SiZE --noheadings --nodeps)
paste <(printf "%s\n" "${!devices[@]}") <(printf "%s\n" "${devices[@]}")
prompt root_drive "" "Which device do you want to be root drive?"
prompt want_home "" "Do you want to store home on another drive? (0 | 1)"
prompt root_drive "" "Which device do you want to be root drive?" "${!devices[@]}"
prompt want_home "" "Do you want to store home on another drive?" 0 1
if [[ "${want_home?}" -eq 1 ]]; then
prompt home_drive "" "Which device do you want to be home drive?"
prompt home_fmt "" "Do you want to format home? (0|1)"
prompt home_drive "" "Which device do you want to be home drive?" "${!devices[@]}"
prompt home_fmt "" "Do you want to format home?" 0 1
fi
prompt want_swap "" "Do you want a swap space? (0 | 1)"
prompt want_swap "" "Do you want a swap space?" 0 1
if [[ "${want_swap?}" -eq 1 ]]; then
prompt swap_size "2g" "Swap size. Default is 2g. (accepting k/m/g/e/p suffix)"
prompt swap_size "2g" "Swap size. Default is 2g. (accepting k/m/g/e/p suffix)" null
fi
# Summary of what is going to happen and user confirmation
## root password
stty -echo
while :; do
prompt password "" "Enter root password" null
[[ "${password?}" == "" ]] && {
printf "\nPassword cannot be empty"
continue
}
prompt pass_conf "" "Confirm root password" null
[[ "${pass_conf?}" == "${password?}" ]] && break
printf "\nPassword does not match."
done
stty echo
# user confirmation
while :; do
printf "\nThis script is descructive."
prompt confirmed "" "Are you sure you want to contiue." YES NO
[[ "${confirmed?}" == "YES" ]] && break
[[ "${confirmed?}" == "NO" ]] && {
printf "Exiting script\n"
exit 1
}
done
# Pre-installation
part_boot=",+1G,C12A7328-F81F-11D2-BA4B-00A0C93EC93B"
@ -164,7 +215,7 @@ sed --in-place 's/#COMPRESSION=\"zstd\"/COMPRESSION=\"zstd\"/' /etc/mkinitcpio.c
mkinitcpio -P
### root password
printf "password\npassword" | passwd
printf "%s\n%s" "${password?}" "${password?}" | passwd
### Boot loader
bootctl install