Files
swift-inotify/Sources/TaskCLI/TaskCLI.docc/TaskCLI.md
T. R. Bernstein e2bfb8280b Add generate-docs command to build task
The Swift Docc has to run in a Linux container to be able to build the
documentation, as it needs access to the inotify.h header files.
2026-03-15 22:46:59 +01:00

62 lines
1.9 KiB
Markdown

# ``TaskCLI``
The build tool for the Swift Inotify project.
## Overview
`TaskCLI` is a small command-line executable (exposed as `task` in `Package.swift`) that automates project-level workflows. Its primary purpose is running integration tests and generating documentation inside Linux Docker containers, so you can validate inotify-dependent code on the correct platform even when developing on macOS.
### Running the Tests
```bash
swift run task test
```
This launches a `swift:latest` Docker container with the repository mounted at `/code`, then executes two test passes:
1. All tests **except** `InotifyLimitTests` — the regular integration suite.
2. Only `InotifyLimitTests` (with `--skip-build`) — tests that manipulate system-level inotify limits and must run in isolation.
The container is started with `--security-opt systempaths=unconfined` so that the limit tests can write to `/proc/sys/fs/inotify/*`.
### Generating Documentation
```bash
swift run task generate-documentation
```
This copies the project to a temporary directory, injects the `swift-docc-plugin` dependency via `swift package add-dependency` (if absent), and runs documentation generation inside a `swift:latest` Docker container. The resulting static sites are written to `./public/inotify/` and `./public/taskcli/`, ready for deployment to GitHub Pages.
The working tree is never modified — all changes happen in the temporary copy, which is cleaned up automatically.
### Verbosity
Pass one or more `-v` flags to increase log output:
| Flag | Level |
|------|-------|
| *(none)* | `notice` |
| `-v` | `info` |
| `-vv` | `debug` |
| `-vvv` | `trace` |
### Prerequisites
Docker must be installed and running on the host machine. The container uses the `linux/arm64` platform by default.
## Topics
### Commands
- ``Command``
- ``TestCommand``
- ``GenerateDocumentationCommand``
### Configuration
- ``GlobalOptions``
### Errors
- ``GenerateDocumentationError``