Skip to content

Latest commit

 

History

History
122 lines (79 loc) · 3.26 KB

File metadata and controls

122 lines (79 loc) · 3.26 KB

Tooling

This repository keeps tooling intentionally lightweight so contributors can get productive quickly.

Defaults

  • C++20 is the project language standard.
  • .clang-format controls formatting.
  • .editorconfig keeps indentation and line endings consistent.
  • .clang-tidy documents the preferred static-analysis baseline.
  • .clangd points language servers at the build tree and enables the right language flags.

Presets

Native

The default local workflow is the native preset:

cmake --preset native
cmake --build --preset native
ctest --test-dir build/native --output-on-failure

This 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 --fresh

Vcpkg

This repository vendors vcpkg as a git submodule under 3rd-party/vcpkg.

Initialize submodules once after clone:

git submodule update --init --recursive

Then configure/build with the vcpkg preset:

cmake --preset vcpkg
cmake --build --preset vcpkg

That 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 vcpkg

The CLI can then expose abstack tui when curses support is found.

Windows

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-failure

Note:

  1. Docker-related commands require Docker Desktop/Engine and CLI access in the current shell.
  2. TUI support remains optional and depends on curses availability.

LSP

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.

Checks

  • Formatting: run clang-format -i on touched C++ sources.
  • Linting: run clang-tidy against the generated compile database when you want static analysis locally.
  • CI parity: configure, build, and run ctest from the native preset.

CLI Callback Logs

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 generated

Optional TUI Build Flag

The CMake option ABSTACK_ENABLE_TUI controls whether curses-based TUI support is attempted.

cmake --preset native -DABSTACK_ENABLE_TUI=ON
cmake --build --preset native

If curses is not detected, the binary still builds and the tui command reports that support is unavailable.