CLI Extension - Add load, help
[clnl] / src / main / extensions / cli / cli.lisp
1 (in-package #:clnl-extension-cli)
2
3 (defun prims ()
4  "PRIMS => PRIMS
5
6 ARGUMENTS AND VALUES:
7
8   PRIMS: Primitives defined for this extension
9
10 DESCRIPTION:
11
12   PRIMS returns the primitives used in the CLI extension."
13  (list
14   (list :name :q :type :command :func #'shut-down)
15   (list :name :load :type :command :args '(t) :func #'load-file)
16   (list :name :help :type :command :args '((:token :optional)) :precedence 20 :func #'help)))
17
18 (defun shut-down ()
19  (cl-charms/low-level:endwin)
20  (sb-ext:exit :abort t))
21
22 (defun load-file (file)
23  (clnl:boot file))
24
25 (defun help (&optional token)
26  (format t
27   (if (not token)
28    "Placeholder help facility, try <:help :q> or <:help :load> for information about the commands we accept"
29    (case token
30     (:|:Q| ":q quits out of clnl")
31     (:|:LOAD|
32      (concatenate 'string
33       ":load <filename> loads up a model into the current clnl instance."
34       " Try :load \"resources/models/Wolf Sheep Predation.nlogo\""))
35     (t (format nil "Don't have help for ~S" token))))))