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.
62 lines
1.9 KiB
Markdown
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``
|