;;; cl-tty.asd — Common Lisp Terminal UI Framework (asdf:defsystem :cl-tty :description "Reusable Common Lisp Terminal UI Framework" :author "Amr Gharbeia" :version "0.11.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")) (:file "detection" :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")) ;; Slot system (v0.11.0) (:file "slot-package" :depends-on ("package")) (:file "slot" :depends-on ("slot-package"))))) :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") (:file "modern-tests" :depends-on ("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") (:file "select-tests" :pathname "../../tests/select-tests") (:file "markdown-tests" :pathname "../../tests/markdown-tests") (:file "dialog-tests" :pathname "../../tests/dialog-tests") (:file "mouse-tests" :pathname "../../tests/mouse-tests") (:file "slot-tests" :pathname "../../tests/slot-tests")))) :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) (:cl-tty-dialog-test "DIALOG-SUITE") (:cl-tty-mouse-test "MOUSE-SUITE") (:cl-tty-slot-test "SLOT-SUITE") (:cl-tty-layout-test "LAYOUT-SUITE") (:cl-tty-modern-backend-test "MODERN-BACKEND-SUITE"))) (let* ((pkg (find-package (first suite))) (suite-name (second suite)) (s (cond (suite-name (find-symbol suite-name pkg)) (pkg (find-symbol (string (first suite)) :keyword)) (t nil)))) (when s (funcall explain (funcall run s)))))) (uiop:quit 0)))