unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: Mark H Weaver <mhw@netris.org>
Cc: bug-guix@gnu.org
Subject: Re: [PATCH] Replace individual scripts with master 'guix' script
Date: Thu, 14 Feb 2013 14:41:54 +0100	[thread overview]
Message-ID: <871ucjau71.fsf@gnu.org> (raw)
In-Reply-To: <87sj4zgrft.fsf_-_@tines.lan> (Mark H. Weaver's message of "Thu, 14 Feb 2013 04:44:54 -0500")

Hi!

Mark H Weaver <mhw@netris.org> skribis:

> From 726ef0a61f943522ecb5a8d8b609c6810727b9d3 Mon Sep 17 00:00:00 2001
> From: Mark H Weaver <mhw@netris.org>
> Date: Thu, 14 Feb 2013 04:15:25 -0500
> Subject: [PATCH 1/2] PRELIMINARY: Replace individual scripts with master
>  'guix' script.
>
> TODO: Update documentation.
> TODO: Install links for 'guix-package' and friends.
>
> * scripts/guix.in: New script.
>
> * Makefile.am (bin_SCRIPTS): Add 'scripts/guix'.  Remove 'guix-build',
>   'guix-download', 'guix-import', 'guix-package', and 'guix-gc'.
>
>   (MODULES): Add 'guix/scripts/guix-build.scm',
>   'guix/scripts/guix-download.scm', 'guix/scripts/guix-import.scm',
>   'guix/scripts/guix-package.scm', and 'guix/scripts/guix-gc.scm'.
>
> * configure.ac (AC_CONFIG_FILES): Add 'scripts/guix'.  Remove 'guix-build',
>   'guix-download', 'guix-import', 'guix-package', and 'guix-gc'.
>
> * guix-build.in, guix-download.in, guix-gc.in, guix-import.in,
>   guix-package.in: Remove shell script boilerplate.  Move to guix/scripts and
>   change suffix from ".in" to ".scm".  Change module name from (NAME) to
>   (guix scripts NAME).
>
> * pre-inst-env.in: Add "@abs_top_builddir@/scripts" to the front of $PATH.
>   Export $GUIX_UNINSTALLED.
>
> * .gitignore: Add '/scripts/guix'.  Remove '/guix-build', '/guix-download',
>   '/guix-package', '/guix-import', and '/guix-gc'.

Perfect, this is the way to go, also wrt. the forthcoming guix-pull
(which will pull Scheme code from Guix from the repo, similar to
‘apt-get update’ or ‘nix-channel --update’.)

A few remarks:

  • Remove the ‘guix-’ prefix from module names, so
    guix/scripts/build.scm instead of guix/scripts/guix-build.scm;

  • No need to add .gitignore to change logs;

  • Make sure to update po/POTFILES.in;

  • Arrange commits such that everything always works; thus, update
    tests to use the new command names in the same commit that changes
    those commands.

+  (define (main arg0 . args)
+    (setlocale LC_ALL "")  ; XXX Is there a reason not to do this?

Rather do as currently done:

  (install-locale)
  (textdomain "guix")
  (setvbuf (current-output-port) _IOLBF)
  (setvbuf (current-error-port) _IOLBF)

+    (maybe-augment-load-paths!)
+    (let ((cmd (basename arg0)))
+      (cond ((string-prefix? "guix-" cmd)
+             (run-script cmd args))
+            ((not (null? args))
+             (run-script (string-append "guix-" (car args))
+                         (cdr args)))
+            (else
+             ;; TODO: Dynamically generate a summary of available commands.

Yes, that would be neat.

We also need to support --version and --help here, using SRFI-37 as is
the current scripts.

+             (format (current-error-port)
+                     "Usage: guix <command> [<args>]~%")

Messages must be i18n’d, and use standard GNU notation:

  Usage: guix COMMAND ARGS...

Thanks for working on that, it’s good to see that I’m becoming less of a
bottleneck!  :-)

Ludo’.

  reply	other threads:[~2013-02-14 13:42 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-12  1:45 [PATCH] Improve shell script headers and pre-inst-env handling Mark H Weaver
2013-02-12  2:24 ` Mark H Weaver
2013-02-12  4:36   ` Mark H Weaver
2013-02-12 15:53   ` Ludovic Courtès
2013-02-12 15:56 ` Ludovic Courtès
2013-02-12 18:44   ` Mark H Weaver
2013-02-12 21:48     ` Ludovic Courtès
2013-02-12 22:44       ` Mark H Weaver
2013-02-13 14:42         ` Ludovic Courtès
2013-02-13  9:55       ` Mark H Weaver
2013-02-13 20:57         ` Ludovic Courtès
2013-02-14  8:28           ` Mark H Weaver
2013-02-14  9:44             ` [PATCH] Replace individual scripts with master 'guix' script Mark H Weaver
2013-02-14 13:41               ` Ludovic Courtès [this message]
2013-02-14 23:13                 ` Mark H Weaver
2013-02-16 20:57                   ` Ludovic Courtès
2013-02-17 14:59                   ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871ucjau71.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=bug-guix@gnu.org \
    --cc=mhw@netris.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).