[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
guix edit
From: |
Ludovic Courtès |
Subject: |
guix edit |
Date: |
Tue, 16 Jun 2015 22:26:49 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
While looking at another package manager for ideas to steal, I found
this one to be a good candidate:
guix edit gcc-4.8
will open $EDITOR (aka. “emacsclient”) on the definition of that
package. This is pretty handy for developers (even when otherwise using
Geiser, I think.)
For “regular users,” it’s less useful because most of the time it will
open an immutable file. However, I envision a --clone option that would
create a file with a module declaration and a template like:
(define my-gcc
(package (inherit gcc)
;; Complete here...
)
(This part is left as an exercise to the reader.)
WDYT?
If there are no objections, I’ll commit the attached version with
appropriate documentation.
Thanks,
Ludo’.
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ludovic Courtès <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix scripts edit)
#:use-module (guix ui)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-37)
#:export (%editor
guix-edit))
(define %options
(list (option '(#\h "help") #f #f
(lambda args
(show-help)
(exit 0)))
(option '(#\V "version") #f #f
(lambda args
(show-version-and-exit "guix edit")))))
(define (show-help)
(display (_ "Usage: guix edit PACKAGE...
Start $EDITOR to edit the definitions of PACKAGE...\n"))
(newline)
(display (_ "
-h, --help display this help and exit"))
(display (_ "
-V, --version display version information and exit"))
(newline)
(show-bug-report-information))
(define %editor
(make-parameter (or (getenv "EDITOR") "emacsclient")))
(define (guix-edit . args)
(with-error-handling
(let* ((specs (parse-command-line args %options '(())
#:argument-handler cons))
(packages (map specification->package specs)))
(for-each (lambda (package)
(unless (package-location package)
(leave (_ "source location of package '~a' is unknown~%")
(package-full-name package))))
packages)
(apply execlp (%editor) (%editor)
(append-map (lambda (package)
(let ((loc (package-location package)))
(list (string-append "+"
(number->string
(location-line loc)))
(location-file loc))))
packages)))))
- guix edit,
Ludovic Courtès <=
- Re: guix edit, Thompson, David, 2015/06/16
- Re: guix edit, Amirouche Boubekki, 2015/06/16
- Re: guix edit, Eric Bavier, 2015/06/17
- Re: guix edit, 韋嘉誠, 2015/06/17
- Re: guix edit, Ludovic Courtès, 2015/06/18