123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #!/bin/sh
- # -*- scheme -*-
- exec ${GUILE:-@installed_guile@} $GUILE_FLAGS -e '(@@ (guild) main)' -s "$0" "$@"
- !#
- ;;;; guild --- running scripts bundled with Guile
- ;;;; Andy Wingo <wingo@pobox.com> --- April 2009
- ;;;;
- ;;;; Copyright (C) 2009, 2010, 2011, 2013, 2014 Free Software Foundation, Inc.
- ;;;;
- ;;;; This library is free software; you can redistribute it and/or
- ;;;; modify it under the terms of the GNU Lesser General Public
- ;;;; License as published by the Free Software Foundation; either
- ;;;; version 3 of the License, or (at your option) any later version.
- ;;;;
- ;;;; This library 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
- ;;;; Lesser General Public License for more details.
- ;;;;
- ;;;; You should have received a copy of the GNU Lesser General Public
- ;;;; License along with this library; if not, write to the Free
- ;;;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- ;;;; Boston, MA 02110-1301 USA
- (define-module (guild)
- #:use-module (ice-9 getopt-long)
- #:use-module (ice-9 command-line)
- #:autoload (ice-9 format) (format))
- ;; Hack to provide scripts with the bug-report address.
- (module-define! the-scm-module
- '%guile-bug-report-address
- "@PACKAGE_BUGREPORT@")
- (define *option-grammar*
- '((help (single-char #\h))
- (version (single-char #\v))))
- (define (display-version)
- (version-etc "@PACKAGE_NAME@"
- (version)
- #:command-name "guild"
- #:license *LGPLv3+*))
- (define (find-script s)
- (resolve-module (list 'scripts (string->symbol s)) #:ensure #f))
- (define (main args)
- (if (defined? 'setlocale)
- (catch 'system-error
- (lambda ()
- (setlocale LC_ALL ""))
- (lambda args
- (format (current-error-port)
- "warning: failed to install locale: ~a~%"
- (strerror (system-error-errno args))))))
- (let* ((options (getopt-long args *option-grammar*
- #:stop-at-first-non-option #t))
- (args (option-ref options '() '())))
- (cond
- ((option-ref options 'help #f)
- (apply (module-ref (resolve-module '(scripts help)) 'main) args)
- (exit 0))
- ((option-ref options 'version #f)
- (display-version)
- (exit 0))
- ((find-script (if (null? args) "help" (car args)))
- => (lambda (mod)
- (exit (apply (module-ref mod 'main) (if (null? args)
- '()
- (cdr args))))))
- (else
- (format (current-error-port)
- "guild: unknown script ~s~%" (car args))
- (format (current-error-port)
- "Try `guild help' for more information.~%")
- (exit 1)))))
|