;;; guix-external.el --- External programs -*- lexical-binding: t -*- ;; Copyright © 2015 Alex Kost ;; 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 this program. If not, see . ;;; Commentary: ;; This file provides auxiliary code for running external programs. ;;; Code: (require 'cl-lib) (require 'guix-config) (defgroup guix-external nil "Settings for external programs." :group 'guix) (defcustom guix-guile-program guix-config-guile-program "Name of the 'guile' executable used for Guix REPL. May be either a string (the name of the executable) or a list of strings of the form: (NAME . ARGS) Where ARGS is a list of arguments to the guile program." :type 'string :group 'guix-external) (defcustom guix-dot-program (if (file-name-absolute-p guix-config-dot-program) guix-config-dot-program (executable-find "dot")) "Name of the 'dot' executable." :type 'string :group 'guix-external) (defcustom guix-dot-default-arguments '("-Tpng") "Default arguments for 'dot' program." :type '(repeat string) :group 'guix-external) (defcustom guix-dot-file-name-function #'guix-png-file-name "Function used to define a file name of a temporary 'dot' file. The function is called without arguments." :type '(choice (function-item guix-png-file-name) (function :tag "Other function")) :group 'guix-external) (defun guix-dot-arguments (output-file &rest args) "Return a list of dot arguments for writing a graph into OUTPUT-FILE. If ARGS is nil, use `guix-dot-default-arguments'." (or guix-dot-program (error (concat "Couldn't find 'dot'.\n" "Set guix-dot-program to a proper value"))) (cl-list* guix-dot-program (concat "-o" output-file) (or args guix-dot-default-arguments))) (defun guix-dot-file-name () "Call `guix-dot-file-name-function'." (funcall guix-dot-file-name-function)) (defun guix-png-file-name () "Return '.png' file name in the `temporary-file-directory'." (concat (make-temp-name (concat (file-name-as-directory temporary-file-directory) "guix-emacs-graph-")) ".png")) (provide 'guix-external) ;;; guix-external.el ends here lstatedir option....zimoun 2019-09-04doc: Update 'README'....Ludovic Courtès 2019-01-09build: Require Guile 2.2....Ludovic Courtès 2018-12-02Make Guile-JSON a required dependency....Eric Bavier 2018-11-23Update Guile-SQLite3 URL everywhere....Ludovic Courtès 2018-09-04Switch to Guile-Gcrypt....Ludovic Courtès 2018-06-27doc: Specify Guile-SQLite3 minimum version....Ludovic Courtès 2018-06-14build: Require Guile-SQLite3....Ludovic Courtès 2018-02-26build: Require Guile >= 2.0.13....Ludovic Courtès 2018-01-07doc: Mark zlib as mandatory, libbz2 as optional....Ludovic Courtès 2018-01-01doc: Update requirements in 'README'....Mathieu Lirzin 2017-09-25README: Replace http:// with https:// where applicable.Marius Bakke