changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > demo / annotate src/cli/cli.lisp

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