clear_input_buffer_then_read

shouldn't be a huge problem now
This commit is contained in:
Jack
2020-01-25 02:02:53 +02:00
committed by GitHub
parent ef8d2abdac
commit 08f356f252
+19 -14
View File
@@ -2,7 +2,7 @@
# Semi-automatic installer of macOS on VirtualBox # Semi-automatic installer of macOS on VirtualBox
# (c) myspaghetti, licensed under GPL2.0 or higher # (c) myspaghetti, licensed under GPL2.0 or higher
# url: https://github.com/myspaghetti/macos-guest-virtualbox # url: https://github.com/myspaghetti/macos-guest-virtualbox
# version 0.80.0 # version 0.80.1
# Requirements: 40GB available storage on host # Requirements: 40GB available storage on host
# Dependencies: bash >= 4.3, xxd, gzip, unzip, wget, dmg2img, # Dependencies: bash >= 4.3, xxd, gzip, unzip, wget, dmg2img,
@@ -85,7 +85,7 @@ The script can be resumed by stages, as described in the following command:
"'"${highlight_color}${0}"' stages'"${default_color}"'" "'"${highlight_color}${0}"' stages'"${default_color}"'"
'"${highlight_color}"'Press enter to review the script settings.'"${default_color}" '"${highlight_color}"'Press enter to review the script settings.'"${default_color}"
read clear_input_buffer_then_read
# custom settings prompt # custom settings prompt
printf ' printf '
@@ -100,7 +100,7 @@ resolution="'"${resolution}"'" # VM display resolution
These values may be customized by editing them at the top of the script file. These values may be customized by editing them at the top of the script file.
'"${highlight_color}"'Press enter to continue, CTRL-C to exit.'"${default_color}" '"${highlight_color}"'Press enter to continue, CTRL-C to exit.'"${default_color}"
read clear_input_buffer_then_read
} }
# check dependencies # check dependencies
@@ -215,14 +215,14 @@ elif [[ "$(cat /proc/sys/kernel/osrelease 2>/dev/null)" =~ [Mm]icrosoft ]]; then
echo "VirtualBox Hyper-V support is experimental." echo "VirtualBox Hyper-V support is experimental."
echo "" echo ""
printf "${highlight_color}"'Press enter to continue, CTRL-C to exit.'"${default_color}" printf "${highlight_color}"'Press enter to continue, CTRL-C to exit.'"${default_color}"
read clear_input_buffer_then_read
elif [[ ! ( "${osrelease}" =~ 18362-Microsoft ) ]]; then elif [[ ! ( "${osrelease}" =~ 18362-Microsoft ) ]]; then
echo "" echo ""
echo "The script requires Windows 10 version 1903 or higher to run properly on WSL." echo "The script requires Windows 10 version 1903 or higher to run properly on WSL."
echo "For lower versions, please run the script on a path on the Windows filesystem," echo "For lower versions, please run the script on a path on the Windows filesystem,"
printf 'for example '"${highlight_color}"'/mnt/c/Users/Public/Documents'"${default_color}"'\n\n' printf 'for example '"${highlight_color}"'/mnt/c/Users/Public/Documents'"${default_color}"'\n\n'
printf "${highlight_color}"'Press enter to continue, CTRL-C to exit.'"${default_color}" printf "${highlight_color}"'Press enter to continue, CTRL-C to exit.'"${default_color}"
read clear_input_buffer_then_read
fi fi
if [ -n "$(VBoxManage.exe -v 2>/dev/null)" ]; then if [ -n "$(VBoxManage.exe -v 2>/dev/null)" ]; then
function VBoxManage() { function VBoxManage() {
@@ -270,7 +270,7 @@ elif [[ "${vbox_version:0:1}" = 5 ]]; then
echo " https://github.com/myspaghetti/macos-guest-virtualbox/issues/86" echo " https://github.com/myspaghetti/macos-guest-virtualbox/issues/86"
echo "" echo ""
printf "${white_on_black}"'Press enter to continue, CTRL-C to exit.'"${default_color}" printf "${white_on_black}"'Press enter to continue, CTRL-C to exit.'"${default_color}"
read clear_input_buffer_then_read
fi fi
# Oracle VM VirtualBox Extension Pack # Oracle VM VirtualBox Extension Pack
@@ -313,7 +313,7 @@ if [[ "${macOS_release_name:0:1}" =~ [Cc] ]]; then
sucatalog="${Catalina_sucatalog}" sucatalog="${Catalina_sucatalog}"
printf 'As of 2019-12-11, macOS Catalina 10.15.2 '"${warning_color}"'does not boot'"${default_color}"' on VirtualBox.\n' printf 'As of 2019-12-11, macOS Catalina 10.15.2 '"${warning_color}"'does not boot'"${default_color}"' on VirtualBox.\n'
printf "${highlight_color}"'Press enter to continue, CTRL-C to exit.'"${default_color}" printf "${highlight_color}"'Press enter to continue, CTRL-C to exit.'"${default_color}"
read clear_input_buffer_then_read
elif [[ "${macOS_release_name:0:1}" =~ [Hh] ]]; then elif [[ "${macOS_release_name:0:1}" =~ [Hh] ]]; then
macOS_release_name="HighSierra" macOS_release_name="HighSierra"
CFBundleShortVersionString="10.13" CFBundleShortVersionString="10.13"
@@ -817,6 +817,11 @@ declare -A ksc=(
["?"]="2A 35 B5 AA" ["?"]="2A 35 B5 AA"
) )
function clear_input_buffer_then_read() {
while read -d '' -r -t 0; do read -d '' -t 0.1 -n 10000; break; done
read
}
# read variable kbstring and convert string to scancodes and send to guest vm # read variable kbstring and convert string to scancodes and send to guest vm
function send_keys() { function send_keys() {
scancode=$(for (( i=0; i < ${#kbstring}; i++ )); scancode=$(for (( i=0; i < ${#kbstring}; i++ ));
@@ -842,10 +847,10 @@ function send_enter() {
function prompt_lang_utils() { function prompt_lang_utils() {
# called after the virtual machine boots up # called after the virtual machine boots up
printf '\n'"${highlight_color}"'Press enter when the Language window is ready.'"${default_color}" printf '\n'"${highlight_color}"'Press enter when the Language window is ready.'"${default_color}"
read clear_input_buffer_then_read
send_enter send_enter
printf '\n'"${highlight_color}"'Press enter when the macOS Utilities window is ready.'"${default_color}" printf '\n'"${highlight_color}"'Press enter when the macOS Utilities window is ready.'"${default_color}"
read clear_input_buffer_then_read
kbspecial='CTRLprs F2 CTRLrls u ENTER t ENTER' kbspecial='CTRLprs F2 CTRLrls u ENTER t ENTER'
send_special send_special
} }
@@ -853,7 +858,7 @@ function prompt_lang_utils() {
function prompt_terminal_ready() { function prompt_terminal_ready() {
# called after the Utilities window is ready # called after the Utilities window is ready
printf '\n'"${highlight_color}"'Press enter when the Terminal command prompt is ready.'"${default_color}" printf '\n'"${highlight_color}"'Press enter when the Terminal command prompt is ready.'"${default_color}"
read clear_input_buffer_then_read
} }
function add_another_terminal() { function add_another_terminal() {
@@ -1005,7 +1010,7 @@ parameters. It is not necessary to allow macOS to continue booting after the
script has run. script has run.
Power off the virtual machine then press enter to continue.' Power off the virtual machine then press enter to continue.'
read clear_input_buffer_then_read
else else
printf ' printf '
@@ -1026,7 +1031,7 @@ function populate_macos_target() {
print_dimly "stage: populate_macos_target" print_dimly "stage: populate_macos_target"
if [[ "$( VBoxManage list runningvms )" =~ ^\""${vmname}" ]]; then if [[ "$( VBoxManage list runningvms )" =~ ^\""${vmname}" ]]; then
printf "${highlight_color}"'Please '"${warning_color}"'manually'"${highlight_color}"' shut down the virtual machine and press enter to continue.'"${default_color}" printf "${highlight_color}"'Please '"${warning_color}"'manually'"${highlight_color}"' shut down the virtual machine and press enter to continue.'"${default_color}"
read clear_input_buffer_then_read
fi fi
VBoxManage storagectl macOS --remove --name SATA >/dev/null 2>&1 VBoxManage storagectl macOS --remove --name SATA >/dev/null 2>&1
VBoxManage storagectl "${vmname}" --add sata --name SATA --hostiocache on >/dev/null 2>&1 VBoxManage storagectl "${vmname}" --add sata --name SATA --hostiocache on >/dev/null 2>&1
@@ -1077,7 +1082,7 @@ send_enter
printf "${highlight_color}"'When the VM reboots, press enter'"${default_color}"' or alternatively printf "${highlight_color}"'When the VM reboots, press enter'"${default_color}"' or alternatively
manually detach the virtual storage device "'"Install ${macOS_release_name}.vdi"'" manually detach the virtual storage device "'"Install ${macOS_release_name}.vdi"'"
to avoid booting into the installer environment again.' to avoid booting into the installer environment again.'
read clear_input_buffer_then_read
VBoxManage controlvm "${vmname}" poweroff >/dev/null 2>&1 VBoxManage controlvm "${vmname}" poweroff >/dev/null 2>&1
for (( i=10; i>5; i-- )); do printf ' \r'"${i}"; sleep 0.5; done for (( i=10; i>5; i-- )); do printf ' \r'"${i}"; sleep 0.5; done
VBoxManage storagectl macOS --remove --name SATA >/dev/null 2>&1 VBoxManage storagectl macOS --remove --name SATA >/dev/null 2>&1
@@ -1166,7 +1171,7 @@ or not these stages are specified.
' '
printf 'Press enter to continue.' printf 'Press enter to continue.'
read clear_input_buffer_then_read
printf ' printf '
Available stage titles: Available stage titles: