The select widget (filtered option list) was only used by the dialog system. Merging removes an entire package boundary, simplifies the dependency chain, and reduces the library from 12 packages to 11. Changes: - absorb select class, accessors, filter, navigation, key handling, rendering, fuzzy matching, and all tests into dialog.org - update cl-tty.dialog package to use cl-tty.box (for dirty-mixin) and cl-tty.layout (for layout-node) - remove select.org, select-package.lisp, select.lisp, select-tests - update ASDF, run-all-tests.lisp, scripts to drop select references - update integration tests to use cl-tty.dialog instead of cl-tty.select All 13 test suites pass at 100%.
107 lines
4.8 KiB
Common Lisp
107 lines
4.8 KiB
Common Lisp
;;; cl-tty.asd — Common Lisp Terminal UI Framework
|
|
(asdf:defsystem :cl-tty
|
|
:description "Reusable Common Lisp Terminal UI Framework"
|
|
:author "Amr Gharbeia"
|
|
:version "1.0.0"
|
|
:license "GPL-3.0"
|
|
:depends-on (:sb-posix)
|
|
:components
|
|
((:module "src/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 "src/layout"
|
|
:components
|
|
((:file "layout")))
|
|
(:module "src/rendering"
|
|
:components
|
|
((:file "framebuffer")))
|
|
(: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"))
|
|
;; 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" "input-package"))
|
|
(:file "dialog" :depends-on ("dialog-package" "dirty" "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/test))))
|
|
|
|
(asdf:defsystem :cl-tty/test
|
|
:description "Test suite for cl-tty"
|
|
:depends-on (:cl-tty :fiveam)
|
|
:components
|
|
((:module "src/backend"
|
|
:components
|
|
((:file "tests")
|
|
(:file "modern-tests" :depends-on ("tests"))))
|
|
(:module "src/layout"
|
|
:components
|
|
((:file "tests")))
|
|
(:module "src/components"
|
|
:components
|
|
((:file "box-tests")
|
|
(:file "dirty-tests")
|
|
(:file "render-tests")
|
|
(:file "theme-tests")
|
|
(:file "input-tests" :pathname "../../tests/input-tests")
|
|
(:file "scrollbox-tabbar-tests" :pathname "../../tests/scrollbox-tabbar-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")))
|
|
(:module "src/rendering"
|
|
:components
|
|
((:file "framebuffer-tests" :pathname "../../tests/framebuffer-tests"))))
|
|
:perform (test-op (o c)
|
|
(let ((run (find-symbol "RUN" :fiveam))
|
|
(explain (find-symbol "EXPLAIN!" :fiveam))
|
|
(status (find-symbol "RESULTS-STATUS" :fiveam))
|
|
(all-passed t))
|
|
(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-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")
|
|
(:cl-tty-framebuffer-test "FRAMEBUFFER-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
|
|
(let ((result (funcall run s)))
|
|
(funcall explain result)
|
|
(unless (funcall status result)
|
|
(setf all-passed nil))))))
|
|
(uiop:quit (if all-passed 0 1)))))
|