;;; cl-tty.asd — Common Lisp Terminal UI Framework (asdf:defsystem :cl-tty :description "Reusable Common Lisp Terminal UI Framework" :author "Amr Gharbeia" :version "0.10.0" :license "TBD" :depends-on (:fiveam :sb-posix) :components ((:module "backend" :components ((:file "package") (:file "classes" :depends-on ("package")) (:file "simple" :depends-on ("package" "classes")) (:file "modern" :depends-on ("package" "classes")))) (:module "layout" :components ((:file "layout"))) (:module "src/components" :components ((:file "package") (:file "dirty") (:file "box" :depends-on ("package")) (:file "text" :depends-on ("package" "box")) (:file "render" :depends-on ("package" "box" "text")) (:file "theme" :depends-on ("package")) ;; Input system (v0.5.0) (:file "input-package" :depends-on ("package")) (:file "input" :depends-on ("input-package" "dirty" "box")) (:file "text-input" :depends-on ("input-package" "input" "box")) (:file "textarea" :depends-on ("input-package" "input" "box")) (:file "keybindings" :depends-on ("input-package" "input")) ;; Container components (v0.6.0) (:file "container-package" :depends-on ("package" "input-package")) (:file "scrollbox" :depends-on ("container-package" "dirty" "box")) (:file "tabbar" :depends-on ("container-package" "dirty" "box")) ;; Select widget (v0.7.0) (:file "select-package" :depends-on ("package" "input-package")) (:file "select" :depends-on ("select-package" "dirty" "box")) ;; Markdown + Code + Diff rendering (v0.8.0) (:file "markdown-package" :depends-on ("package")) (:file "markdown" :depends-on ("markdown-package")) ;; Dialog + Toast (v0.9.0) (:file "dialog-package" :depends-on ("package" "select-package" "input-package")) (:file "dialog" :depends-on ("dialog-package" "dirty" "select" "text-input")) ;; Mouse support (v0.10.0) (:file "mouse-package" :depends-on ("package" "input-package")) (:file "mouse" :depends-on ("mouse-package" "dirty" "input"))))) :in-order-to ((test-op (test-op :cl-tty-tests)))) (asdf:defsystem :cl-tty-tests :description "Test suite for cl-tty" :depends-on (:cl-tty :fiveam) :components ((:module "backend" :components ((:file "tests"))) (:module "layout" :components ((:file "tests"))) (:module "src/components" :components ((:file "box-tests") (:file "dirty-tests") (:file "render-tests") (:file "theme-tests") (:file "input-tests") (:file "scrollbox-tabbar-tests" :pathname "../../tests/scrollbox-tabbar-tests.lisp") (:file "select-tests" :pathname "../../tests/select-tests.lisp") (:file "markdown-tests" :pathname "../../tests/markdown-tests.lisp") (:file "dialog-tests" :pathname "../../tests/dialog-tests.lisp") (:file "mouse-tests" :pathname "../../tests/mouse-tests.lisp")))) :perform (test-op (o c) (let ((run (find-symbol "RUN" :fiveam)) (explain (find-symbol "EXPLAIN!" :fiveam))) (dolist (suite '((:cl-tty-backend-test "BACKEND-SUITE") (:cl-tty-box-test "BOX-SUITE") (:cl-tty-input-test "INPUT-SUITE") (:cl-tty-scrollbox-test "SCROLLBOX-SUITE") (:cl-tty-select-test "SELECT-SUITE") (:cl-tty-markdown-test "MARKDOWN-SUITE") (:cl-tty-dialog-test "DIALOG-SUITE"))) (let* ((pkg (find-package (first suite))) (s (and pkg (find-symbol (second suite) pkg)))) (when s (funcall explain (funcall run s)))))) (uiop:quit 0)))