summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xetc/guix-install.sh25
1 files changed, 6 insertions, 19 deletions
diff --git a/etc/guix-install.sh b/etc/guix-install.sh
index f71d6f0de71..3604c71ed6b 100755
--- a/etc/guix-install.sh
+++ b/etc/guix-install.sh
@@ -92,33 +92,20 @@ _debug()
92 fi 92 fi
93} 93}
94 94
95_flush()
96{
97 while read -t0; do
98 read -N1
99 done
100}
101
102die() 95die()
103{ 96{
104 _err "${ERR}$*" 97 _err "${ERR}$*"
105 exit 1 98 exit 1
106} 99}
107 100
108# Return true if user answered yes, false otherwise. It defaults to "yes" 101# Return true if user answered yes, false otherwise. The prompt is
109# when a single newline character is input. 102# yes-biased, that is, when the user simply enter newline, it is equivalent to
103# answering "yes".
110# $1: The prompt question. 104# $1: The prompt question.
111prompt_yes_no() { 105prompt_yes_no() {
112 while true; do 106 local -l yn
113 _flush 107 read -rp "$1 [Y/n]" yn
114 read -N1 -rsp "$1 [Y/n]" yn 108 [[ ! $yn || $yn = y || $yn = yes ]] || return 1
115 case $yn in
116 $'\n') echo && return 0;;
117 [Yy]*) echo && return 0;;
118 [Nn]*) echo && return 1;;
119 *) echo && _msg "Please answer yes or no."
120 esac
121 done
122} 109}
123 110
124chk_require() 111chk_require()