;;; Gash --- Guile As SHell
;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of Gash.
;;;
;;; Gash 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.
;;;
;;; Gash 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 Gash.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gash config)
  #:export (%bzip2
            %xz
            %compress
            %gzip
            %version))

;;; Commentary:
;;;
;;; Compile-time configuration of gash.  When adding a substitution variable
;;; here, make sure to have configure substitute it.
;;;
;;; Code:

(define %version
  "UNKNOWN")

(define %bzip2
  "/gnu/store/4ir3i8yr04kx9b3qz6j2hjnx5gihlgfg-bzip2-1.0.6/bin/bzip2")

(define (exec-internal-compress . args)
  (let* ((guile "/gnu/store/6r3f401zbzzacmkarvflqpxqwsd0915v-guile-2.2.4/bin/guile")
         (expr `(begin
                  (set! %load-path ',%load-path)
                  (set! %load-compiled-path ',%load-compiled-path)
                  ((@@ (gash commands compress) main) "compress" ,@args)))
         (script (with-output-to-string (lambda () (write expr)))))
    (execl guile guile "--no-auto-compile" "-c" script)))

(define %compress
  (let ((external-compress ""))
    (if (string-null? external-compress)
        exec-internal-compress
        external-compress)))

(define %gzip
  "/gnu/store/268psk4pi237988i4krprkshgj3bs5gw-gzip-1.9/bin/gzip")

(define %xz
  "/gnu/store/ggyaadxm9bd7zc7s9qfbsgnjgmxfis3n-xz-5.2.4/bin/xz")
