elastic / elastic/docs-builder
chore: Consolidate micro-projects in src/
- Dominant language
- C#
- Stars
- 24
- Forks
- 44
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 146
Description
## What
Three projects under `src/` each contain 1–2 source files and exist only to hold a single class or interface. Collapsing them reduces solution sprawl (currently 44 projects) without any logical boundary benefit.
## Projects to collapse
### `src/Elastic.Documentation.Svg` → merge into `Elastic.Documentation`
Contains one 296-line static class (`EuiSvgIcons`). Has its own csproj with two consumers (`Elastic.Markdown`, `Elastic.Codex`). Move the file into `Elastic.Documentation`, update project references.
Note: #3572 deletes the unused `tokens/` icon set (56 files + ~90 lines of plumbing) from this project first — do that before the merge to move less.
### `src/services/Elastic.Documentation.Services` → merge into `Elastic.Documentation` or tooling
Single file: an empty marker interface `IService` + `ServiceInvoker`. Referenced by ~8 service projects. Merge into `Elastic.Documentation` (or whichever shared project the services already depend on).
Note: delete the `IService` marker and its `where TService : IService` constraints outright instead of moving it — the invoke delegate is passed explicitly, so the marker grants no capability.
### `src/services/Elastic.Documentation.Integrations` → merge into `Elastic.Documentation.Deploying` or `.Assembler`
Two files: `S3IncrementalUploader` and `S3EtagCalculator`. Consumed only by sibling service projects. Collapse into the deploying/assembler project that already depends on it.
## How
For each: move source files, delete the `.csproj`, update `PackageReference` → `ProjectReference` in consumers, remove from `docs-builder.slnx`, run `dotnet build`.
Part of the broader ponytail over-engineering audit tracked in #3574.
Contributor guide
Assessment
This issue has not been assessed yet.