From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ricardo Wurmus Subject: bug#27820: guix package -u: order of argument is significant Date: Tue, 25 Jul 2017 23:23:40 +0200 Message-ID: <87eft46wir.fsf@elephly.net> References: <5977294D.1020304@crazy-compilers.com> <87fudkb8zm.fsf@netris.org> <8760egcjdc.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48327) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1da7JC-0000OU-Vn for bug-guix@gnu.org; Tue, 25 Jul 2017 17:24:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1da7JC-0001HI-0l for bug-guix@gnu.org; Tue, 25 Jul 2017 17:24:02 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:53767) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1da7JB-0001HC-TB for bug-guix@gnu.org; Tue, 25 Jul 2017 17:24:01 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1da7JB-0003oa-NL for bug-guix@gnu.org; Tue, 25 Jul 2017 17:24:01 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-reply-to: <8760egcjdc.fsf@gnu.org> List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 27820@debbugs.gnu.org, Hartmut Goebel Ludovic Courtès writes: > Mark H Weaver skribis: > >> I agree that this is quite confusing. Perhaps we should issue a warning >> if the regexp begins with "-". >> >> Also, perhaps we should *always* require an argument after "-u", even if >> "-u" is at the end of the command line, failing otherwise. Users would >> then learn to always pass an argument to "-u", and thus would be less >> likely to fall into this trap when adding more options after the "-u". > > I’m in favor of the former: > > diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm > index 8da7a3fd3..b6133b6af 100644 > --- a/guix/scripts/package.scm > +++ b/guix/scripts/package.scm > @@ -486,6 +486,11 @@ Install, remove, or upgrade packages in a single transaction.\n")) > arg-handler)))) > (option '(#\u "upgrade") #f #t > (lambda (opt name arg result arg-handler) > + (when (string-prefix? "-" arg) > + (warning (G_ "upgrade regexp '~a' looks like a \ > +command-line option~%") > + arg) > + (warning (G_ "is this intended?~%"))) > (let arg-handler ((arg arg) (result result)) > (values (alist-cons 'upgrade arg > ;; Delete any prior "upgrade all" > > Thoughts? This seems good to me. I just wonder if there are legitimate cases where a package regexp would look like a command line option. If that’s not the case could we just “unread” the argument and parse it as the next option? -- Ricardo GPG: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC https://elephly.net