scripts: Don't trigger option hints for short options.

Previously, 'guix install foo -r bar' would crash with a backtrace
because NAME would be #\r (a character instead of a string).

* guix/scripts.scm (parse-command-line)[parse-options-from]: Call
'option-hint' only when NAME is a string.
This commit is contained in:
Ludovic Courtès 2021-02-22 23:38:46 +01:00
parent e8fc373900
commit 11f11d7ecb
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019, 2020, 2021, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Deck Pickard <deck.r.pickard@gmail.com>
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
@ -157,7 +157,8 @@ parameter of 'args-fold'."
;; Actual parsing takes place here.
(apply args-fold* args options
(lambda (opt name arg . rest)
(let ((hint (option-hint name options)))
(let ((hint (and (string? name) ;not a short option
(option-hint name options))))
(report-error (G_ "~A: unrecognized option~%") name)
(when hint
(display-hint