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’.
next prev parent 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).