From e8e8fe6f669347d9ecc39ed70c08aa3c24fd696d Mon Sep 17 00:00:00 2001 From: SANO Masatoshi Date: Thu, 14 Jan 2016 12:00:14 +0900 Subject: [PATCH] use util.lisp more --- src/list.ros | 12 ++++-------- src/use.ros | 34 +++++++++++----------------------- src/util.lisp | 28 +++++++++++++++++++++++++--- 3 files changed, 40 insertions(+), 34 deletions(-) diff --git a/src/list.ros b/src/list.ros index 8b6d9e2..3d7b521 100644 --- a/src/list.ros +++ b/src/list.ros @@ -15,19 +15,14 @@ exec ros +Q -m roswell -L sbcl-bin -- $0 "$@" #-ros.sub.list (defpackage :ros.sub.list (:use :cl)) + (in-package :ros.sub.list) -#-ros.sub.list -(ros:quicklisp :environment nil) -#-ros.sub.list -(unless (find-package :uiop) - (ql:quickload :uiop :silent t)) + #-ros.sub.list (unless (find-package :net.html.parser) (ql:quickload :cl-html-parse :silent t)) -#-ros.sub.list -(defun impl (imp) - (ros:roswell `(,(format nil "roswell-internal-use impl ~A" (or imp ""))) :string t)) + #-ros.sub.list (defun list-impls (impl &key function params) (declare (ignorable params)) @@ -40,6 +35,7 @@ exec ros +Q -m roswell -L sbcl-bin -- $0 "$@" :type :wild)))) (mapcar function dir))) + #-ros.sub.list (progn (export diff --git a/src/use.ros b/src/use.ros index 356bad5..0f653b7 100644 --- a/src/use.ros +++ b/src/use.ros @@ -5,36 +5,24 @@ exec ros +R +Q -L sbcl-bin -m roswell -- $0 "$@" |# (cl:in-package :cl-user) + +#-ros.util +(load (make-pathname + :defaults *load-pathname* + :name "util" :type "lisp")) + (when (cl:find-package :ros.use) (push :ros.use *features*)) #-ros.use (defpackage :ros.use - (:use :cl)) + (:use :cl :ros.util)) (in-package :ros.use) -#-ros.use -(defun config (&rest argv) - (ros:roswell `("config" "set" ,@argv) :string t)) + #-ros.use (defun main (subcmd impl/version &rest argv) (declare (ignore subcmd impl/version)) - (if (and argv - (ignore-errors - (ros:roswell `("-L" ,(first argv) "version=t" "run")))) - (let* ((pos (position #\/ (first argv))) - (lisp (if pos - (subseq (first argv) 0 pos) - (first argv)))) - (if pos - (progn - (config "default.lisp" lisp) - (config (format nil "~A.version" lisp) - (subseq (first argv) (1+ pos)))) - (config (if (digit-char-p (aref lisp 0)) - (format nil "~A.version" (ros:roswell `("config" "show" "default.lisp") :string t)) - "default.lisp") - lisp))) - (progn - (format *error-output* "Error to use '~A'~%" (first argv)) - (ros:quit 1)))) + (unless (use (first argv)) + (format *error-output* "Error to use '~A'~%" (first argv)) + (ros:quit 1))) diff --git a/src/util.lisp b/src/util.lisp index 9e7d031..f817b7a 100644 --- a/src/util.lisp +++ b/src/util.lisp @@ -4,22 +4,44 @@ (defpackage :ros.util (:use :cl) - (:export :uname :uname-m :homedir :config)) + (:export :uname :uname-m :homedir :config :use :impl)) (in-package :ros.util) (defun uname () - (ros:roswell '("roswell-internal-use uname") :string t)) + (ros:roswell '("roswell-internal-use" "uname") :string t)) (defun uname-m () - (ros:roswell '("roswell-internal-use uname -m") :string t)) + (ros:roswell '("roswell-internal-use" "uname" "-m") :string t)) (defun homedir () (ros:opt "homedir")) +(defun impl (imp) + (ros:roswell `("roswell-internal-use" "impl" ,(or imp "")) :string t)) + (defun config (c) (ros:roswell (list "config show" c) :string t)) (defun (setf config) (a b) (ros:roswell (list "config" b a) :string t) a) + +(defun use (arg) + (when (and arg + (ignore-errors + (ros:roswell `("-L" ,arg "version=t" "run")))) + (let* ((pos (position #\/ arg)) + (lisp (if pos + (subseq arg 0 pos) + arg))) + (if pos + (progn + (config "default.lisp" lisp) + (config (format nil "~A.version" lisp) + (subseq arg (1+ pos)))) + (config (if (digit-char-p (aref lisp 0)) + (format nil "~A.version" (config "default.lisp")) + "default.lisp") + lisp))) + t))