add util-main.lisp

This commit is contained in:
SANO Masatoshi 2017-09-11 15:19:42 +09:00
parent d15cf90360
commit 0974e20c6c
3 changed files with 36 additions and 11 deletions

View file

@ -15,7 +15,7 @@ endif
LISPS = helper.el \
init.lisp \
util.lisp \
util.lisp util-main.lisp \
util-swank.lisp \
locations.lisp \
patch-quicklisp.lisp \

View file

@ -3,19 +3,15 @@
#|Creates a new ros script, optionally based on a template.
exec ros -Q -m roswell -N roswell -- $0 "$@"
|#
(progn
(roswell:include "util")
(roswell:quicklisp :environment nil))
(roswell:include "util-main"))
(defpackage :ros.script.init.3672012201
(:use :cl :roswell.util))
(:use :cl :roswell.util.main))
(in-package :ros.script.init.3672012201)
(defun main (&optional name &rest r)
(if name
(apply (or (module "init" name)
(module "init" "default"))
`(,name ,@r))
#+nil "show usage"))
(defun main (&rest r)
(module-main r :default "default")
;; show usage ?
)
;;; vim: set ft=lisp lisp:

29
lisp/util-main.lisp Normal file
View file

@ -0,0 +1,29 @@
(roswell:include "util" "util-main")
(defpackage :roswell.util.main
(:use :cl :roswell.util)
(:export :module-main))
(in-package :roswell.util.main)
(defun module-main (args &key default usage)
(let* ((name (first args))
(packagename (package-name *package*))
(pos (loop repeat 3
with pos = 0
for p = (position #\. packagename :start pos)
while p
collect p
do (setf pos (1+ p))))
(module-name (string-downcase
(subseq packagename (1+ (second pos)) (third pos)))))
(cond
((and name
(module module-name name))
(apply (module module-name name) args))
((and name
default
(module module-name default))
(apply (module module-name default) args))
((and usage
(module module-name usage))
(apply (module module-name usage) args)))))