|
| 1 | +# Architecture |
| 2 | + |
| 3 | +## Definitions |
| 4 | + |
| 5 | +**SPM.** Swift package manager and Swift build tool. In other words, `swift` CLI tool |
| 6 | + |
| 7 | +## High level overview |
| 8 | + |
| 9 | +- `../Sources`. |
| 10 | + All major AeroSpace source code. Managed by SPM |
| 11 | +- `../Sources/AppBundle/`. |
| 12 | + AeroSpace.app server. Technically, it's a swift library that is exposed to `xcode-app-bundle-launcher` |
| 13 | +- `../Sources/Cli/`. |
| 14 | + CLI client. CLI client is built purely using SPM, no Xcode involved (phew!) |
| 15 | +- `../Sources/Common/`. |
| 16 | + Shared code between server and client. Mainly command line args parsing and util functions are shared. |
| 17 | +- `../xcode-app-bundle-launcher/`, `../project.yml`, and `../AeroSpace.xcodeproj/`. |
| 18 | + Very small technical directories that define entry point for Xcode project. |
| 19 | + Xcode projects are hard to manage without using the Xcode itself. |
| 20 | + |
| 21 | + But since I edit the source code in Neovim, all code is pushed as much as possible to SPM "library" located in `../Sources/`. |
| 22 | + SPM doesn't allow building macOS apps (aka "App Bundle"). SPM is only capable of defining libraries and building CLI apps. |
| 23 | + |
| 24 | + Only few necessary entry point files are located in `../xcode-app-bundle-launcher`. |
| 25 | + The Xcode project model is located in `../AeroSpace.xcodeproj/` and generated by "skeleton" in `../project.yml` |
| 26 | +- `../Sources/AppBundleTests`. |
| 27 | + Tests |
| 28 | +- `../docs/`. |
| 29 | + Documentation for site and man pages in Asciidoc format https://asciidoc.org/ |
| 30 | + |
| 31 | +## Commands subsystem |
| 32 | + |
| 33 | +todo |
| 34 | + |
| 35 | +../Sources/AppBundle/command/ |
| 36 | +../Sources/Common/cmdArgs/ |
| 37 | + |
| 38 | +Command checklist: |
| 39 | +- [ ] Documentation in `../docs/aerospace-*` and `../docs/commands.adoc` |
| 40 | + - [ ] Check that site looks alright `./.commands.html` |
| 41 | + - [ ] Check that man page looks alright `./.man` |
| 42 | +- [ ] Shell completion `../args-grammar.txt` |
| 43 | + |
| 44 | +## TOML Config parse subsystem |
| 45 | + |
| 46 | +todo |
| 47 | + |
| 48 | +../Sources/AppBundle/config/ |
| 49 | + |
| 50 | +## Tree Model subsystem |
| 51 | + |
| 52 | +todo |
| 53 | + |
| 54 | +../Sources/AppBundle/tree/ |
| 55 | + |
| 56 | +## Layout subsystem |
| 57 | + |
| 58 | +../Sources/AppBundle/layout/ |
0 commit comments