This repository keeps tooling intentionally lightweight so contributors can get productive quickly.
- C++20 is the project language standard.
.clang-formatcontrols formatting..editorconfigkeeps indentation and line endings consistent..clang-tidydocuments the preferred static-analysis baseline..clangdpoints language servers at the build tree and enables the right language flags.
The default local workflow is the native preset:
cmake --preset native
cmake --build --preset native
ctest --test-dir build/native --output-on-failureThis preset writes the compile database to build/native/, which is what .clangd expects by default.
Presets use the Ninja generator for cross-platform consistency (Linux/macOS/Windows).
If you previously configured build/native with a different generator, run a fresh configure once:
cmake --preset native --freshThis repository vendors vcpkg as a git submodule under 3rd-party/vcpkg.
Initialize submodules once after clone:
git submodule update --init --recursiveThen configure/build with the vcpkg preset:
cmake --preset vcpkg
cmake --build --preset vcpkgThat preset writes its build tree to build/vcpkg/ and uses:
3rd-party/vcpkg/scripts/buildsystems/vcpkg.cmake
If you switch editors or want clangd to use that database instead, update the compile database path in .clangd or configure the project with the native preset again.
For TUI-capable builds through vcpkg, enable the optional manifest feature:
export VCPKG_MANIFEST_FEATURES=tui
cmake --preset vcpkg
cmake --build --preset vcpkgThe CLI can then expose abstack tui when curses support is found.
Native Windows builds are supported and validated in CI.
Typical PowerShell flow:
cmake --preset native -DABSTACK_ENABLE_TUI=OFF
cmake --build --preset native
ctest --test-dir build/native --output-on-failureNote:
- Docker-related commands require Docker Desktop/Engine and CLI access in the current shell.
- TUI support remains optional and depends on curses availability.
clangd is the recommended language server. It works well with the generated compile_commands.json, understands the project standard, and pairs naturally with .clang-format and .clang-tidy.
If you use VS Code, install the clangd extension and let it read the build tree generated by the native preset.
- Formatting: run
clang-format -ion touched C++ sources. - Linting: run
clang-tidyagainst the generated compile database when you want static analysis locally. - CI parity: configure, build, and run
ctestfrom the native preset.
CLI commands emit callback events to screen and persist them to:
.abstack/logs/abstack-cli.log
Disable spinner output when needed:
ABSTACK_NO_SPINNER=1 abstack build samples/unified.abs --out-dir generatedThe CMake option ABSTACK_ENABLE_TUI controls whether curses-based TUI support is attempted.
cmake --preset native -DABSTACK_ENABLE_TUI=ON
cmake --build --preset nativeIf curses is not detected, the binary still builds and the tui command reports that support is unavailable.