* [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively. @ 2018-10-24 0:15 rsiddharth 2018-10-24 0:21 ` [bug#33134] [PATCH 1/1] guix-install.sh: Update welcome rsiddharth ` (3 more replies) 0 siblings, 4 replies; 21+ messages in thread From: rsiddharth @ 2018-10-24 0:15 UTC (permalink / raw) To: 33134; +Cc: rsiddharth I want to be able to run the guix-install.sh non-interactively[1] like this: echo "yy" | guix-install.sh (One "y" for "Press return to continue..." prompt, the other "y" for "Permit downloading pre-built package binaries from the project's build farms? (yes/no)" prompt). Currently, the `read` in welcome function reads both the "y". I updated it to read just one character. [1]: https://git.ricketyspace.net/propellor/tree/config.hs?id=0cddd47ef#n640 rsiddharth (1): guix-install.sh: Update welcome. etc/guix-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.19.1 ^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 1/1] guix-install.sh: Update welcome. 2018-10-24 0:15 [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively rsiddharth @ 2018-10-24 0:21 ` rsiddharth 2018-10-24 11:54 ` [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Efraim Flashner ` (2 subsequent siblings) 3 siblings, 0 replies; 21+ messages in thread From: rsiddharth @ 2018-10-24 0:21 UTC (permalink / raw) To: 33134; +Cc: rsiddharth * etc/guix-install.sh (welcome): Read exactly one character from input. --- etc/guix-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index ca6874ba0..cf839c20e 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -398,7 +398,7 @@ This script installs GNU Guix on your system https://www.gnu.org/software/guix/ EOF echo -n "Press return to continue..." - read -r ANSWER + read -N 1 -r ANSWER } main() -- 2.19.1 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively. 2018-10-24 0:15 [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively rsiddharth 2018-10-24 0:21 ` [bug#33134] [PATCH 1/1] guix-install.sh: Update welcome rsiddharth @ 2018-10-24 11:54 ` Efraim Flashner 2018-10-24 13:24 ` Tobias Geerinckx-Rice ` (6 more replies) 2018-11-09 4:13 ` [bug#33134] [PATCH 0/4] [Refactor 0] Add auto yes/no switch to guix-install.sh rsiddharth 2021-07-13 12:01 ` bug#33134: [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Maxim Cournoyer 3 siblings, 7 replies; 21+ messages in thread From: Efraim Flashner @ 2018-10-24 11:54 UTC (permalink / raw) To: rsiddharth; +Cc: 33134 [-- Attachment #1: Type: text/plain, Size: 748 bytes --] On Tue, Oct 23, 2018 at 08:15:42PM -0400, rsiddharth wrote: > I want to be able to run the guix-install.sh non-interactively[1] like this: > > echo "yy" | guix-install.sh > > (One "y" for "Press return to continue..." prompt, the other "y" for > "Permit downloading pre-built package binaries from the project's build > farms? (yes/no)" prompt). > > Currently, the `read` in welcome function reads both the "y". I updated it to > read just one character. > would this work? echo "y\ny" | guix-install.sh -- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively. 2018-10-24 11:54 ` [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Efraim Flashner @ 2018-10-24 13:24 ` Tobias Geerinckx-Rice 2018-10-24 13:27 ` Efraim Flashner 2018-11-03 1:10 ` [bug#33134] [PATCH 0/5] Add auto yes/no switch to guix-install.sh rsiddharth ` (5 subsequent siblings) 6 siblings, 1 reply; 21+ messages in thread From: Tobias Geerinckx-Rice @ 2018-10-24 13:24 UTC (permalink / raw) To: Efraim Flashner; +Cc: 33134, rsiddharth rsiddharth, Efraim, Efraim Flashner wrote: > On Tue, Oct 23, 2018 at 08:15:42PM -0400, rsiddharth wrote: >> I want to be able to run the guix-install.sh >> non-interactively[1] like this: >> >> echo "yy" | guix-install.sh >> >> (One "y" for "Press return to continue..." prompt, the other >> "y" for >> "Permit downloading pre-built package binaries from the >> project's build >> farms? (yes/no)" prompt). >> >> Currently, the `read` in welcome function reads both the "y". I >> updated it to >> read just one character. >> > > would this work? echo "y\ny" | guix-install.sh Not quite, but $ echo -e "y\ny" | guix-install.sh will. Or the more conventional $ yes | guix-install.sh # untested providing guix-install.sh doesn't choke on that infinite stream of "y"s. Which it might, and even if it doesn't now, there's no guarantee that this dirty hack won't break the future. If this is something we want to support, it could be done more better through a '--non-interactive' or '--force' flag that skips these and any future prompts at the source. Non? T G-R ^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively. 2018-10-24 13:24 ` Tobias Geerinckx-Rice @ 2018-10-24 13:27 ` Efraim Flashner 0 siblings, 0 replies; 21+ messages in thread From: Efraim Flashner @ 2018-10-24 13:27 UTC (permalink / raw) To: Tobias Geerinckx-Rice; +Cc: 33134, rsiddharth [-- Attachment #1: Type: text/plain, Size: 1789 bytes --] On Wed, Oct 24, 2018 at 03:24:03PM +0200, Tobias Geerinckx-Rice wrote: > rsiddharth, Efraim, > > Efraim Flashner wrote: > > On Tue, Oct 23, 2018 at 08:15:42PM -0400, rsiddharth wrote: > > > I want to be able to run the guix-install.sh non-interactively[1] > > > like this: > > > > > > echo "yy" | guix-install.sh > > > > > > (One "y" for "Press return to continue..." prompt, the other > > > "y" for > > > "Permit downloading pre-built package binaries from the > > > project's build > > > farms? (yes/no)" prompt). > > > > > > Currently, the `read` in welcome function reads both the "y". I > > > updated it to > > > read just one character. > > > > > > > would this work? echo "y\ny" | guix-install.sh > > Not quite, but > > $ echo -e "y\ny" | guix-install.sh > > will. Or the more conventional > > $ yes | guix-install.sh # untested > > providing guix-install.sh doesn't choke on that infinite stream of "y"s. > Which it might, and even if it doesn't now, there's no guarantee that this > dirty hack won't break the future. This actually made me snort. "Alright! I get it! You really want it!" > > If this is something we want to support, it could be done more better > through a '--non-interactive' or '--force' flag that skips these and any > future prompts at the source. > > Non? > > T G-R This is actually something I was thinking of a while ago. I use github as a mirror, and I definately wouldn't be against using their CI system to install guix, 'guix pull', 'guix build -f guix.scm'. -- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 0/5] Add auto yes/no switch to guix-install.sh 2018-10-24 11:54 ` [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Efraim Flashner 2018-10-24 13:24 ` Tobias Geerinckx-Rice @ 2018-11-03 1:10 ` rsiddharth 2018-11-03 1:10 ` [bug#33134] [PATCH 1/5] guix-install.sh: Update welcome rsiddharth ` (4 subsequent siblings) 6 siblings, 0 replies; 21+ messages in thread From: rsiddharth @ 2018-11-03 1:10 UTC (permalink / raw) To: 33134; +Cc: rsiddharth The following patch series adds "auto yes/no" switch to the guix-install.sh script. It works like this: guix-install.sh -y [ for non-interactively answering 'yes' to all y/n prompts ] guix-install.sh -n [ for non-interactively answering 'no' to all y/n prompts ] If either the -y or the -n switch is provided, the script will skip the "Press return to continue..." prompt. I'm not a bash expert; if there is a better way to do this, let me know. I would be happy to refactor and send a fresh patch series. rsiddharth (5): guix-install.sh: Update welcome. guix-install.sh: Add parse_args. guix-install.sh: Update main. guix-install.sh: Update welcome. guix-install.sh: Update sys_authorize_build_farms. etc/guix-install.sh | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) -- 2.19.1 ^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 1/5] guix-install.sh: Update welcome. 2018-10-24 11:54 ` [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Efraim Flashner 2018-10-24 13:24 ` Tobias Geerinckx-Rice 2018-11-03 1:10 ` [bug#33134] [PATCH 0/5] Add auto yes/no switch to guix-install.sh rsiddharth @ 2018-11-03 1:10 ` rsiddharth 2018-11-06 11:32 ` Danny Milosavljevic 2018-11-03 1:10 ` [bug#33134] [PATCH 2/5] guix-install.sh: Add parse_args rsiddharth ` (3 subsequent siblings) 6 siblings, 1 reply; 21+ messages in thread From: rsiddharth @ 2018-11-03 1:10 UTC (permalink / raw) To: 33134; +Cc: rsiddharth * etc/guix-install.sh (welcome): Read exactly one character from input. --- etc/guix-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index ca6874ba0..cf839c20e 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -398,7 +398,7 @@ This script installs GNU Guix on your system https://www.gnu.org/software/guix/ EOF echo -n "Press return to continue..." - read -r ANSWER + read -N 1 -r ANSWER } main() -- 2.19.1 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 1/5] guix-install.sh: Update welcome. 2018-11-03 1:10 ` [bug#33134] [PATCH 1/5] guix-install.sh: Update welcome rsiddharth @ 2018-11-06 11:32 ` Danny Milosavljevic 0 siblings, 0 replies; 21+ messages in thread From: Danny Milosavljevic @ 2018-11-06 11:32 UTC (permalink / raw) To: rsiddharth; +Cc: 33134 [-- Attachment #1: Type: text/plain, Size: 753 bytes --] On Fri, 2 Nov 2018 21:10:34 -0400 rsiddharth <s@ricketyspace.net> wrote: > * etc/guix-install.sh (welcome): Read exactly one character from input. > --- > etc/guix-install.sh | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/etc/guix-install.sh b/etc/guix-install.sh > index ca6874ba0..cf839c20e 100755 > --- a/etc/guix-install.sh > +++ b/etc/guix-install.sh > @@ -398,7 +398,7 @@ This script installs GNU Guix on your system > https://www.gnu.org/software/guix/ > EOF > echo -n "Press return to continue..." > - read -r ANSWER > + read -N 1 -r ANSWER While it's nice for the interactive user, doesn't this break yes | ./guix-install.sh because now it doesn't wait for the newline? [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 2/5] guix-install.sh: Add parse_args. 2018-10-24 11:54 ` [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Efraim Flashner ` (2 preceding siblings ...) 2018-11-03 1:10 ` [bug#33134] [PATCH 1/5] guix-install.sh: Update welcome rsiddharth @ 2018-11-03 1:10 ` rsiddharth 2018-11-06 11:27 ` Danny Milosavljevic 2018-11-03 1:10 ` [bug#33134] [PATCH 3/5] guix-install.sh: Update main rsiddharth ` (2 subsequent siblings) 6 siblings, 1 reply; 21+ messages in thread From: rsiddharth @ 2018-11-03 1:10 UTC (permalink / raw) To: 33134; +Cc: rsiddharth * etc/guix-install.sh (parse_args): New function. --- etc/guix-install.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index cf839c20e..d16f8ac59 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -370,6 +370,21 @@ sys_authorize_build_farms() done } +parse_args() +{ + local args_num=$# + + if [ $args_num -lt 1 ]; then + return + fi + + # process -y / -n arg. + export AUTO_YN=${1:1:1} + if [ -z $AUTO_YN ]; then + export AUTO_YN="" + fi +} + welcome() { cat<<"EOF" -- 2.19.1 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 2/5] guix-install.sh: Add parse_args. 2018-11-03 1:10 ` [bug#33134] [PATCH 2/5] guix-install.sh: Add parse_args rsiddharth @ 2018-11-06 11:27 ` Danny Milosavljevic 0 siblings, 0 replies; 21+ messages in thread From: Danny Milosavljevic @ 2018-11-06 11:27 UTC (permalink / raw) To: rsiddharth; +Cc: 33134 [-- Attachment #1: Type: text/plain, Size: 392 bytes --] Hi, > + # process -y / -n arg. > + export AUTO_YN=${1:1:1} > + if [ -z $AUTO_YN ]; then > + export AUTO_YN="" > + fi Why "export" ? Now all the child processes get it, making their environment different from before. This makes parse_args have system-wide side effects. If we wanted to export it, we could do it explicitly after parse_args has been called. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 3/5] guix-install.sh: Update main. 2018-10-24 11:54 ` [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Efraim Flashner ` (3 preceding siblings ...) 2018-11-03 1:10 ` [bug#33134] [PATCH 2/5] guix-install.sh: Add parse_args rsiddharth @ 2018-11-03 1:10 ` rsiddharth 2018-11-06 11:28 ` Danny Milosavljevic 2018-11-03 1:11 ` [bug#33134] [PATCH 4/5] guix-install.sh: Update welcome rsiddharth 2018-11-03 1:11 ` [bug#33134] [PATCH 5/5] guix-install.sh: Update sys_authorize_build_farms rsiddharth 6 siblings, 1 reply; 21+ messages in thread From: rsiddharth @ 2018-11-03 1:10 UTC (permalink / raw) To: 33134; +Cc: rsiddharth * etc/guix-install.sh (main): Call parse_args. --- etc/guix-install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index d16f8ac59..c817b6dd8 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -418,6 +418,8 @@ EOF main() { + parse_args $@ + local tmp_path welcome -- 2.19.1 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 3/5] guix-install.sh: Update main. 2018-11-03 1:10 ` [bug#33134] [PATCH 3/5] guix-install.sh: Update main rsiddharth @ 2018-11-06 11:28 ` Danny Milosavljevic 0 siblings, 0 replies; 21+ messages in thread From: Danny Milosavljevic @ 2018-11-06 11:28 UTC (permalink / raw) To: rsiddharth; +Cc: 33134 [-- Attachment #1: Type: text/plain, Size: 474 bytes --] On Fri, 2 Nov 2018 21:10:57 -0400 rsiddharth <s@ricketyspace.net> wrote: > * etc/guix-install.sh (main): Call parse_args. > --- > etc/guix-install.sh | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/etc/guix-install.sh b/etc/guix-install.sh > index d16f8ac59..c817b6dd8 100755 > --- a/etc/guix-install.sh > +++ b/etc/guix-install.sh > @@ -418,6 +418,8 @@ EOF > > main() > { > + parse_args $@ > + Should be "$@" with quotes [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 4/5] guix-install.sh: Update welcome. 2018-10-24 11:54 ` [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Efraim Flashner ` (4 preceding siblings ...) 2018-11-03 1:10 ` [bug#33134] [PATCH 3/5] guix-install.sh: Update main rsiddharth @ 2018-11-03 1:11 ` rsiddharth 2018-11-03 1:11 ` [bug#33134] [PATCH 5/5] guix-install.sh: Update sys_authorize_build_farms rsiddharth 6 siblings, 0 replies; 21+ messages in thread From: rsiddharth @ 2018-11-03 1:11 UTC (permalink / raw) To: 33134; +Cc: rsiddharth * etc/guix-install.sh (welcome): Don't prompt if AUTO_YN is set. --- etc/guix-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index c817b6dd8..9bf52db41 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -413,7 +413,7 @@ This script installs GNU Guix on your system https://www.gnu.org/software/guix/ EOF echo -n "Press return to continue..." - read -N 1 -r ANSWER + [[ -n $AUTO_YN ]] || read -N 1 -r ANSWER } main() -- 2.19.1 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 5/5] guix-install.sh: Update sys_authorize_build_farms. 2018-10-24 11:54 ` [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Efraim Flashner ` (5 preceding siblings ...) 2018-11-03 1:11 ` [bug#33134] [PATCH 4/5] guix-install.sh: Update welcome rsiddharth @ 2018-11-03 1:11 ` rsiddharth 2018-11-06 11:31 ` Danny Milosavljevic 6 siblings, 1 reply; 21+ messages in thread From: rsiddharth @ 2018-11-03 1:11 UTC (permalink / raw) To: 33134; +Cc: rsiddharth * etc/guix-install.sh (sys_authorize_build_farms): Don't prompt if AUTO_YN is set. --- etc/guix-install.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index 9bf52db41..18adc17a2 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -355,8 +355,11 @@ sys_enable_guix_daemon() sys_authorize_build_farms() { # authorize the public keys of the two build farms + local yn=$AUTO_YN + while true; do - read -p "Permit downloading pre-built package binaries from the project's build farms? (yes/no) " yn + [[ -n $yn ]] || read -p "Permit downloading pre-built package binaries from the project's build farms? (yes/no) " yn + case $yn in [Yy]*) guix archive --authorize < "${ROOT_HOME}/.guix-profile/share/guix/hydra.gnu.org.pub" && _msg "${PAS}Authorized public key for hydra.gnu.org"; @@ -365,7 +368,7 @@ sys_authorize_build_farms() break;; [Nn]*) _msg "${INF}Skipped authorizing build farm public keys" break;; - *) _msg "Please answer yes or no."; + *) _msg "Please answer yes or no."; yn="" esac done } -- 2.19.1 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 5/5] guix-install.sh: Update sys_authorize_build_farms. 2018-11-03 1:11 ` [bug#33134] [PATCH 5/5] guix-install.sh: Update sys_authorize_build_farms rsiddharth @ 2018-11-06 11:31 ` Danny Milosavljevic 0 siblings, 0 replies; 21+ messages in thread From: Danny Milosavljevic @ 2018-11-06 11:31 UTC (permalink / raw) To: rsiddharth; +Cc: 33134 [-- Attachment #1: Type: text/plain, Size: 281 bytes --] Hi, On Fri, 2 Nov 2018 21:11:38 -0400 rsiddharth <s@ricketyspace.net> wrote: > - *) _msg "Please answer yes or no."; > + *) _msg "Please answer yes or no."; yn="" Does this make it conditionally interactive? Would it be better to "exit 1" here? [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 0/4] [Refactor 0] Add auto yes/no switch to guix-install.sh 2018-10-24 0:15 [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively rsiddharth 2018-10-24 0:21 ` [bug#33134] [PATCH 1/1] guix-install.sh: Update welcome rsiddharth 2018-10-24 11:54 ` [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Efraim Flashner @ 2018-11-09 4:13 ` rsiddharth 2018-11-09 4:14 ` [bug#33134] [PATCH 1/4] guix-install.sh: Add parse_args rsiddharth ` (3 more replies) 2021-07-13 12:01 ` bug#33134: [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Maxim Cournoyer 3 siblings, 4 replies; 21+ messages in thread From: rsiddharth @ 2018-11-09 4:13 UTC (permalink / raw) To: 33134; +Cc: rsiddharth Thanks Danny, I've refactored the patch based on your feedack. Danny Milosavljevic wrote: >> + # process -y / -n arg. >> + export AUTO_YN=${1:1:1} >> + if [ -z $AUTO_YN ]; then >> + export AUTO_YN="" >> + fi > Why "export" ? Now all the child processes get it, making their environment > different from before. This makes parse_args have system-wide side effects. Remove the `export`. >> ... >> >> main() >> { >> + parse_args $@ >> + > Should be > > "$@" > >with quotes Done. >> ... >> ... >> https://www.gnu.org/software/guix/ >> EOF >> echo -n "Press return to continue..." >> - read -r ANSWER >> + read -N 1 -r ANSWER > While it's nice for the interactive user, doesn't this break > > yes | ./guix-install.sh > > because now it doesn't wait for the newline? Yes, it would break `yes | ./guix-install.sh`. I've removed `-N 1` from the `read` statement. >> - *) _msg "Please answer yes or no."; >> + *) _msg "Please answer yes or no."; yn="" > Does this make it conditionally interactive? Would it be better to "exit 1" here? When the user is running the script interactively and answers, say "Oui", we arrive at the: *) _msg "Please answer yes or no."; case. After this, we go to the beginning of the loop: [[ -n $yn ]] || read -p "Permit downloading pre-built package binaries from the project's build farms? (yes/no) " yn Since $yn is "Oui" `[[ -n $yn ]]` will evaluate to true, the user won't be prompted again, we'll go back to: *) _msg "Please answer yes or no." and this will repeat infinitely. The `yn=""` was added: *) _msg "Please answer yes or no."; yn="" to reset the value of yn, so that `[[ -n $yn ]]` will evaluate to false and the user will be prompted again for answer. rsiddharth (4): guix-install.sh: Add parse_args. guix-install.sh: Update main. guix-install.sh: Update welcome. guix-install.sh: Update sys_authorize_build_farms. etc/guix-install.sh | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) -- 2.19.1 ^ permalink raw reply [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 1/4] guix-install.sh: Add parse_args. 2018-11-09 4:13 ` [bug#33134] [PATCH 0/4] [Refactor 0] Add auto yes/no switch to guix-install.sh rsiddharth @ 2018-11-09 4:14 ` rsiddharth 2018-11-09 4:15 ` [bug#33134] [PATCH 2/4] guix-install.sh: Update main rsiddharth ` (2 subsequent siblings) 3 siblings, 0 replies; 21+ messages in thread From: rsiddharth @ 2018-11-09 4:14 UTC (permalink / raw) To: 33134; +Cc: rsiddharth * etc/guix-install.sh (parse_args): New function. --- etc/guix-install.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index ca6874ba0..3191d1be9 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -370,6 +370,21 @@ sys_authorize_build_farms() done } +parse_args() +{ + local args_num=$# + + if [ $args_num -lt 1 ]; then + return + fi + + # process -y / -n arg. + AUTO_YN=${1:1:1} + if [ -z $AUTO_YN ]; then + AUTO_YN="" + fi +} + welcome() { cat<<"EOF" -- 2.19.1 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 2/4] guix-install.sh: Update main. 2018-11-09 4:13 ` [bug#33134] [PATCH 0/4] [Refactor 0] Add auto yes/no switch to guix-install.sh rsiddharth 2018-11-09 4:14 ` [bug#33134] [PATCH 1/4] guix-install.sh: Add parse_args rsiddharth @ 2018-11-09 4:15 ` rsiddharth 2018-11-09 4:15 ` [bug#33134] [PATCH 3/4] guix-install.sh: Update welcome rsiddharth 2018-11-09 4:15 ` [bug#33134] [PATCH 4/4] guix-install.sh: Update sys_authorize_build_farms rsiddharth 3 siblings, 0 replies; 21+ messages in thread From: rsiddharth @ 2018-11-09 4:15 UTC (permalink / raw) To: 33134; +Cc: rsiddharth * etc/guix-install.sh (main): Call parse_args. --- etc/guix-install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index 3191d1be9..23c5f5da2 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -418,6 +418,8 @@ EOF main() { + parse_args "$@" + local tmp_path welcome -- 2.19.1 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 3/4] guix-install.sh: Update welcome. 2018-11-09 4:13 ` [bug#33134] [PATCH 0/4] [Refactor 0] Add auto yes/no switch to guix-install.sh rsiddharth 2018-11-09 4:14 ` [bug#33134] [PATCH 1/4] guix-install.sh: Add parse_args rsiddharth 2018-11-09 4:15 ` [bug#33134] [PATCH 2/4] guix-install.sh: Update main rsiddharth @ 2018-11-09 4:15 ` rsiddharth 2018-11-09 4:15 ` [bug#33134] [PATCH 4/4] guix-install.sh: Update sys_authorize_build_farms rsiddharth 3 siblings, 0 replies; 21+ messages in thread From: rsiddharth @ 2018-11-09 4:15 UTC (permalink / raw) To: 33134; +Cc: rsiddharth * etc/guix-install.sh (welcome): Don't prompt if AUTO_YN is set. --- etc/guix-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index 23c5f5da2..16686ff89 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -413,7 +413,7 @@ This script installs GNU Guix on your system https://www.gnu.org/software/guix/ EOF echo -n "Press return to continue..." - read -r ANSWER + [[ -n $AUTO_YN ]] || read -r ANSWER } main() -- 2.19.1 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [bug#33134] [PATCH 4/4] guix-install.sh: Update sys_authorize_build_farms. 2018-11-09 4:13 ` [bug#33134] [PATCH 0/4] [Refactor 0] Add auto yes/no switch to guix-install.sh rsiddharth ` (2 preceding siblings ...) 2018-11-09 4:15 ` [bug#33134] [PATCH 3/4] guix-install.sh: Update welcome rsiddharth @ 2018-11-09 4:15 ` rsiddharth 3 siblings, 0 replies; 21+ messages in thread From: rsiddharth @ 2018-11-09 4:15 UTC (permalink / raw) To: 33134; +Cc: rsiddharth * etc/guix-install.sh (sys_authorize_build_farms): Don't prompt if AUTO_YN is set. --- etc/guix-install.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index 16686ff89..cbcf5316d 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -355,8 +355,11 @@ sys_enable_guix_daemon() sys_authorize_build_farms() { # authorize the public keys of the two build farms + local yn=$AUTO_YN + while true; do - read -p "Permit downloading pre-built package binaries from the project's build farms? (yes/no) " yn + [[ -n $yn ]] || read -p "Permit downloading pre-built package binaries from the project's build farms? (yes/no) " yn + case $yn in [Yy]*) guix archive --authorize < "${ROOT_HOME}/.guix-profile/share/guix/hydra.gnu.org.pub" && _msg "${PAS}Authorized public key for hydra.gnu.org"; @@ -365,7 +368,7 @@ sys_authorize_build_farms() break;; [Nn]*) _msg "${INF}Skipped authorizing build farm public keys" break;; - *) _msg "Please answer yes or no."; + *) _msg "Please answer yes or no."; yn="" esac done } -- 2.19.1 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* bug#33134: [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively. 2018-10-24 0:15 [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively rsiddharth ` (2 preceding siblings ...) 2018-11-09 4:13 ` [bug#33134] [PATCH 0/4] [Refactor 0] Add auto yes/no switch to guix-install.sh rsiddharth @ 2021-07-13 12:01 ` Maxim Cournoyer 3 siblings, 0 replies; 21+ messages in thread From: Maxim Cournoyer @ 2021-07-13 12:01 UTC (permalink / raw) To: rsiddharth; +Cc: 33134-done Hello, rsiddharth <s@ricketyspace.net> writes: > I want to be able to run the guix-install.sh non-interactively[1] like this: > > echo "yy" | guix-install.sh > > (One "y" for "Press return to continue..." prompt, the other "y" for > "Permit downloading pre-built package binaries from the project's build > farms? (yes/no)" prompt). > > Currently, the `read` in welcome function reads both the "y". I updated it to > read just one character. > > [1]: https://git.ricketyspace.net/propellor/tree/config.hs?id=0cddd47ef#n640 > > rsiddharth (1): > guix-install.sh: Update welcome. > > etc/guix-install.sh | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) The guix-install.sh saw some imrovements in v1.3.0 that makes it support the non-interactive 'yes | sudo ./guix-install.sh' use case. I think it obsoletes this patch. Closing, but feel free to send a new patch series if I missed anything. Thank you, Maxim ^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2021-07-13 12:03 UTC | newest] Thread overview: 21+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-10-24 0:15 [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively rsiddharth 2018-10-24 0:21 ` [bug#33134] [PATCH 1/1] guix-install.sh: Update welcome rsiddharth 2018-10-24 11:54 ` [bug#33134] [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Efraim Flashner 2018-10-24 13:24 ` Tobias Geerinckx-Rice 2018-10-24 13:27 ` Efraim Flashner 2018-11-03 1:10 ` [bug#33134] [PATCH 0/5] Add auto yes/no switch to guix-install.sh rsiddharth 2018-11-03 1:10 ` [bug#33134] [PATCH 1/5] guix-install.sh: Update welcome rsiddharth 2018-11-06 11:32 ` Danny Milosavljevic 2018-11-03 1:10 ` [bug#33134] [PATCH 2/5] guix-install.sh: Add parse_args rsiddharth 2018-11-06 11:27 ` Danny Milosavljevic 2018-11-03 1:10 ` [bug#33134] [PATCH 3/5] guix-install.sh: Update main rsiddharth 2018-11-06 11:28 ` Danny Milosavljevic 2018-11-03 1:11 ` [bug#33134] [PATCH 4/5] guix-install.sh: Update welcome rsiddharth 2018-11-03 1:11 ` [bug#33134] [PATCH 5/5] guix-install.sh: Update sys_authorize_build_farms rsiddharth 2018-11-06 11:31 ` Danny Milosavljevic 2018-11-09 4:13 ` [bug#33134] [PATCH 0/4] [Refactor 0] Add auto yes/no switch to guix-install.sh rsiddharth 2018-11-09 4:14 ` [bug#33134] [PATCH 1/4] guix-install.sh: Add parse_args rsiddharth 2018-11-09 4:15 ` [bug#33134] [PATCH 2/4] guix-install.sh: Update main rsiddharth 2018-11-09 4:15 ` [bug#33134] [PATCH 3/4] guix-install.sh: Update welcome rsiddharth 2018-11-09 4:15 ` [bug#33134] [PATCH 4/4] guix-install.sh: Update sys_authorize_build_farms rsiddharth 2021-07-13 12:01 ` bug#33134: [PATCH 0/1] guix-install.sh: Add ability to run it non-interactively Maxim Cournoyer
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).