* [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 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 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 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 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-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 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 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 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).