changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > demo / annotate src/demo.lisp

changeset 22: ba323d8c0f93
parent: demo.lisp@d8f806f1d327
author: ellis <ellis@rwest.io>
date: Sat, 03 Jun 2023 22:48:46 -0400
permissions: -rw-r--r--
description: refactor1
0
ellis <ellis@rwest.io>
parents:
diff changeset
1
 ;; demo.lisp
3
ellis <ellis@rwest.io>
parents: 0
diff changeset
2
 (in-package :demo)
0
ellis <ellis@rwest.io>
parents:
diff changeset
3
 
ellis <ellis@rwest.io>
parents:
diff changeset
4
 (defparameter demo-path (merge-pathnames "cl-demo" (uiop:temporary-directory)))
ellis <ellis@rwest.io>
parents:
diff changeset
5
 
ellis <ellis@rwest.io>
parents:
diff changeset
6
 (defvar db-path (merge-pathnames "db" demo-path))
ellis <ellis@rwest.io>
parents:
diff changeset
7
 
ellis <ellis@rwest.io>
parents:
diff changeset
8
 (defun cli-opts ()
ellis <ellis@rwest.io>
parents:
diff changeset
9
   "Returns the top-level CLI options."
ellis <ellis@rwest.io>
parents:
diff changeset
10
   (list
ellis <ellis@rwest.io>
parents:
diff changeset
11
    (cli:make-option
ellis <ellis@rwest.io>
parents:
diff changeset
12
     :string
ellis <ellis@rwest.io>
parents:
diff changeset
13
     :description "demo app to run"
ellis <ellis@rwest.io>
parents:
diff changeset
14
     :short-name #\x
ellis <ellis@rwest.io>
parents:
diff changeset
15
     :long-name "app"
ellis <ellis@rwest.io>
parents:
diff changeset
16
     :initial-value "client"
ellis <ellis@rwest.io>
parents:
diff changeset
17
     :env-vars '("DEMO_APP")
11
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents: 3
diff changeset
18
     :key :app)
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents: 3
diff changeset
19
    (cli:make-option
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents: 3
diff changeset
20
     :string
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents: 3
diff changeset
21
     :description "path to config"
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents: 3
diff changeset
22
     :short-name #\c
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents: 3
diff changeset
23
     :long-name "config"
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents: 3
diff changeset
24
     :initial-value "$DEMO_PATH/.fig"
d8f806f1d327 obj updates
ellis <ellis@rwest.io>
parents: 3
diff changeset
25
     :env-vars '("DEMO_CONFIG"))))
0
ellis <ellis@rwest.io>
parents:
diff changeset
26
 
ellis <ellis@rwest.io>
parents:
diff changeset
27
 (defun cli-handler (cmd)
ellis <ellis@rwest.io>
parents:
diff changeset
28
   "Handler for the `demo' command."
ellis <ellis@rwest.io>
parents:
diff changeset
29
   (let ((app (cli:getopt cmd :app)))
3
ellis <ellis@rwest.io>
parents: 0
diff changeset
30
     (format t "running: ~A!~%" app)))
0
ellis <ellis@rwest.io>
parents:
diff changeset
31
 
ellis <ellis@rwest.io>
parents:
diff changeset
32
 (defun cli-cmd ()
ellis <ellis@rwest.io>
parents:
diff changeset
33
   "Our demo command."
ellis <ellis@rwest.io>
parents:
diff changeset
34
   (cli:make-command
ellis <ellis@rwest.io>
parents:
diff changeset
35
    :name "demo"
ellis <ellis@rwest.io>
parents:
diff changeset
36
    :description "A collection of demos"
ellis <ellis@rwest.io>
parents:
diff changeset
37
    :version "1.0.0"
ellis <ellis@rwest.io>
parents:
diff changeset
38
    :authors '("ellis <ellis@rwest.io>")
ellis <ellis@rwest.io>
parents:
diff changeset
39
    :license "WTFPL"
3
ellis <ellis@rwest.io>
parents: 0
diff changeset
40
    :options (cli-opts)
ellis <ellis@rwest.io>
parents: 0
diff changeset
41
    :handler #'cli-handler))
0
ellis <ellis@rwest.io>
parents:
diff changeset
42
 
ellis <ellis@rwest.io>
parents:
diff changeset
43
 (defun main ()
ellis <ellis@rwest.io>
parents:
diff changeset
44
   "A demo of some common-lisp functionality."
3
ellis <ellis@rwest.io>
parents: 0
diff changeset
45
   (cli:run (cli-cmd)))