lisp/compile-parenscript.ros @ e2a961f1d037

More
author Steve Losh <steve@stevelosh.com>
date Thu, 08 Nov 2018 18:11:27 -0500
parents 37b02aa11c8c
children (none)
#!/bin/sh
#|-*- mode:lisp -*-|#
#|
exec ros -Q -- $0 "$@"
|#

#|

A Roswell script to compile Parenscript files.

Usage
-----

    $ compile-parenscript filename...

LICENSE
-------

MIT/X11.

|#

(unless (find-package :uiop)
  (ql:quickload '(:uiop) :silent t))

(unless (find-package :parenscript)
  (ql:quickload '(:parenscript) :silent t))


(defun terminate (code &optional message &rest args)
  (when message
    (format *error-output* "~&~A~%"
            (apply #'format nil (princ-to-string message) args)))
  (uiop:quit code))


(defun compile-parenscript-file (source)
  (let* ((source-path (pathname source))
         (target-path (make-pathname :type "js"
                                     :defaults source-path)))
    (with-open-file (output target-path
                            :direction :output
                            :if-exists :supersede)
      (write-string (parenscript::ps-compile-file source-path) output)))
  (values))

(defun main (&rest filenames)
  (unless filenames
    (terminate -1 "Usage: compile-parenscript filename..."))
  (mapc #'compile-parenscript-file filenames))