2.1 KiB
2.1 KiB
Contributing to PodmanClient.DotNet
Thank you for contributing. This repo follows MaksIT conventions (see AGENTS.md and homelab common/csharp / common/maksit-repo-maintenance skills).
Development setup
Prerequisites
- .NET 10 SDK
- Git
- Optional: reachable Podman API for integration tests (
PODMAN_TEST_URLorPODMAN_INTEGRATION_URL)
Build
dotnet build src/PodmanClientDotNet.slnx
Tests
RepoUtils test engine (coverage + badges):
utils/Invoke-TestEngine.bat
Direct:
dotnet test src/PodmanClientDotNet.Tests/PodmanClientDotNet.Tests.csproj
When coverage changes and the test engine runs CoverageBadges, commit updated SVGs under assets/badges/ (cited in README.md).
Commit message format
(type): description
Types: (feature):, (bugfix):, (refactor):, (perf):, (test):, (docs):, (build):, (ci):, (style):, (revert):, (chore):.
- Lowercase description; no trailing period.
Code style
- .NET 10, nullable reference types, implicit usings.
- Root namespace:
MaksIT.$(MSBuildProjectName)inPodmanClientDotNet.csproj; omitnamespacewhen it matches the root (client partials, abstractions). - MaksIT.Results for API outcomes; MaksIT.Core.Extensions for JSON (
ToJson/ToObject<T>). - File-scoped namespaces and same-line braces; Models/ use nullable reference types (
string?,List<T>?, …) for optional JSON fields. - XML documentation on public types (DTOs, interfaces, entry types). Method-level docs on large interfaces are optional (
CS1591suppressed). - Model layout helpers:
utils/tools/Polish-PodmanClientSources.ps1,utils/tools/Enable-ModelsNullable.ps1.
Pull requests
- Build and tests pass.
- Update README.md / CHANGELOG.md when behavior or public API changes.
- Refresh
assets/badges/*.svgwhen coverage badges change. - Keep diffs scoped.
Versioning
Semantic Versioning: bump Version in src/PodmanClient/PodmanClientDotNet.csproj with CHANGELOG.md for releases. Use utils/Invoke-ReleasePackage.bat when releasing.