src/Snap,src/Snapx,src/Snap.Installer: primary .NET projects (library, CLI, and installer).- Native C++ runtime:
src/Snap.CoreRun(+ tests insrc/Snap.CoreRun.Tests). - Managed tests:
src/Snap.Tests,src/Snapx.Tests,src/Snap.Installer.Tests, shared fixtures insrc/Snap.Shared.Tests. - Solution:
src/Snapx.slnx(.NET 10 XML format). Build outputs land underbuild/(e.g.,build/dotnet,build/native). - Docs and tooling:
docs/,docker/, PowerShell scripts in repo root.
- Bootstrap (first run):
pwsh ./init.ps1. - Full bootstrap build:
pwsh ./build.ps1 Bootstrap(builds native + .NET for host OS/RIDs). - Build and pack core packages:
pwsh ./build.ps1 Snaporpwsh ./build.ps1 Snapx. - Build installer:
pwsh ./build.ps1 Snap-Installer -Rid win-x64 -NetCoreAppVersion net9.0. - .NET tests:
pwsh ./build.ps1 Run-Dotnet-UnitTests -Rid win-x64. - Native tests:
pwsh ./build.ps1 Run-Native-UnitTests -Rid linux-x64. Notes: Scripts default toDebug,net9.0, and sensible RIDs; seebuild.ps1 -?for options. Requires .NET SDK 6/8/9 and PowerShell 7 (see README).
.editorconfigenforced: spaces, 4-space indent for C#; 2 for*.csproj/*.props/YAML; LF line endings insrc/.- C#: PascalCase for types/methods/properties, camelCase for locals/parameters, private fields
_camelCaseorcamelCaseconsistently; files match main type name. - Tests: classes end with
Tests; filenames*Tests.cs. - CMake/C++: 4-space indent; keep headers in
src/.../includeand sources undersrc/.../srcas existing patterns show.
- Frameworks: xUnit (+ Moq) for .NET; Google Test for native.
- Run via scripts above or
dotnet testinside each test project. Keep tests deterministic and cross-platform where applicable. - Naming: one test class per unit/feature; method names should describe behavior, e.g.,
MethodName_WhenCondition_ShouldResult.
- Commits: short, imperative subject (e.g., "Update nuget packages"), optional scope, reference issues/PRs with
(#123)when relevant. - PRs: clear description, linked issues, reproduction steps, and output logs; include tests for new behavior and update docs (README/docs/) when user-facing changes occur.
- CI: target
developunless instructed; ensurebuild.ps1 Run-*-UnitTestspasses locally for your platform/RID.