Skip to content

Commit ee255e7

Browse files
Merge pull request #24 from TimeWarpEngineering/Cramer/2025-12-22/dev
Integrate TimeWarp.Nuru.DevCli shared endpoints
2 parents 4d21fbe + b023d1c commit ee255e7

27 files changed

Lines changed: 97 additions & 238 deletions

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,3 +420,6 @@ tools/dev-cli/generated/
420420

421421
# Dev CLI AOT binary
422422
bin/
423+
424+
# VS Code language server cache
425+
*.lscache

.timewarp/dev.jsonc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
// Per-repo configuration for TimeWarp.Terminal dev-cli
3+
"checkVersionConfig": {
4+
"checkVersionStrategy": "nuget-search",
5+
"packages": "TimeWarp.Terminal"
6+
}
7+
}

Directory.Packages.props

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<Project>
33
<!-- MSBuild and NuGet behavior configuration -->
44
<PropertyGroup Label="MSBuild/NuGet Configuration">
55
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
66
</PropertyGroup>
77
<ItemGroup Label="TimeWarp Packages">
8-
<PackageVersion Include="TimeWarp.Amuru" Version="1.0.0-beta.21" />
9-
<PackageVersion Include="TimeWarp.Builder" Version="1.0.0-beta.1" />
8+
<PackageVersion Include="TimeWarp.Amuru" Version="1.0.0-beta.33" />
9+
<PackageVersion Include="TimeWarp.Builder" Version="1.0.0-beta.2" />
1010
<PackageVersion Include="TimeWarp.Jaribu" Version="1.0.0-beta.12" />
11-
<PackageVersion Include="TimeWarp.Nuru" Version="3.0.0-beta.63" />
11+
<PackageVersion Include="TimeWarp.Nuru" Version="3.0.0-beta.70" />
12+
<PackageVersion Include="TimeWarp.Nuru.DevCli" Version="3.0.0-beta.70" />
1213
</ItemGroup>
1314
<ItemGroup Label="Testing">
1415
<PackageVersion Include="Shouldly" Version="4.3.0" />
@@ -17,7 +18,7 @@
1718
<PackageVersion Include="Roslynator.Analyzers" Version="4.15.0" />
1819
<PackageVersion Include="Roslynator.CodeAnalysis.Analyzers" Version="4.15.0" />
1920
<PackageVersion Include="Roslynator.Formatting.Analyzers" Version="4.15.0" />
20-
<PackageVersion Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="10.0.201" />
21+
<PackageVersion Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="10.0.300" />
2122
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.CodeStyle" Version="5.3.0" />
2223
</ItemGroup>
2324
</Project>
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Integrate TimeWarp.Nuru.DevCli shared endpoints
2+
3+
## Description
4+
5+
Replace custom `clean`, `check-version`, and `self-install` endpoint implementations with shared endpoints from the `TimeWarp.Nuru.DevCli` NuGet package. This reduces code duplication across TimeWarp repositories and ensures consistent behavior.
6+
7+
## Checklist
8+
9+
- [ ] Add `TimeWarp.Nuru.DevCli` package version to `Directory.Packages.props`
10+
- [ ] Add `<PackageReference Include="TimeWarp.Nuru.DevCli" />` to `tools/dev-cli/Directory.Build.props`
11+
- [ ] Update `tools/dev-cli/dev.cs` to register Amuru services in `ConfigureServices()`
12+
- [ ] Delete `tools/dev-cli/endpoints/clean.cs` (replaced by shared)
13+
- [ ] Delete `tools/dev-cli/endpoints/check-version.cs` (replaced by shared)
14+
- [ ] Delete `tools/dev-cli/endpoints/self-install.cs` (replaced by shared)
15+
- [ ] Run `./bin/dev self-install` to rebuild the CLI
16+
- [ ] Verify `./bin/dev clean` works
17+
- [ ] Verify `./bin/dev check-version` works
18+
- [ ] Verify `./bin/dev self-install` works
19+
20+
## Notes
21+
22+
### Service Registration
23+
24+
The shared endpoints require these services from TimeWarp.Amuru:
25+
- `IRepoCleanService` / `RepoCleanService` - comprehensive cleaning (bin/obj directories)
26+
- `IRepoCheckVersionService` / `RepoCheckVersionService` - version checking with multiple strategies
27+
- `IRepoConfigService` / `RepoConfigService` - per-repo config defaults
28+
29+
Register in `dev.cs`:
30+
```csharp
31+
NuruApp app = NuruApp.CreateBuilder()
32+
.WithDescription("Development CLI for timewarp-terminal")
33+
.ConfigureServices(services =>
34+
{
35+
services.AddSingleton<IRepoCleanService, RepoCleanService>();
36+
services.AddSingleton<IRepoCheckVersionService, RepoCheckVersionService>();
37+
services.AddSingleton<IRepoConfigService, RepoConfigService>();
38+
})
39+
.DiscoverEndpoints()
40+
.Build();
41+
```
42+
43+
### Source-Gen DI
44+
45+
Nuru's source-gen DI handles services registered via `ConfigureServices()`. No `UseMicrosoftDependencyInjection()` needed.
46+
47+
### repo.yaml (Optional)
48+
49+
Can create `.timewarp/repo.yaml` for check-version defaults:
50+
```yaml
51+
check-version:
52+
strategy: nuget-search
53+
packages: TimeWarp.Terminal
54+
```
55+
56+
This is optional - can pass `--strategy nuget-search --package TimeWarp.Terminal` on command line instead.
57+
58+
### Shared vs Custom Endpoints
59+
60+
| Endpoint | Shared Package | Notes |
61+
|----------|---------------|-------|
62+
| `clean` | Yes | Uses `IRepoCleanService` |
63+
| `check-version` | Yes | Uses `IRepoCheckVersionService`, `IRepoConfigService` |
64+
| `self-install` | Yes | Standalone (no service deps) |
65+
| `build` | No | Keep custom |
66+
| `test` | No | Keep custom |
67+
| `verify-samples` | No | Keep custom |
68+
| `workflow` | No | Keep custom (orchestrates other commands) |

source/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<!-- Default package metadata (can be overridden in individual projects) -->
66
<PropertyGroup Label="Package Metadata">
7-
<Version>1.0.0-beta.12</Version>
7+
<Version>1.0.0-beta.13</Version>
88
<Authors>Steven T. Cramer</Authors>
99
<RepositoryUrl>https://github.com/TimeWarpEngineering/timewarp-terminal</RepositoryUrl>
1010
<PackageLicenseExpression>Unlicense</PackageLicenseExpression>

tests/ansi-string-utils-03-emoji-width.cs

100644100755
File mode changed.

tests/cancel-key-press-01-basic.cs

100644100755
File mode changed.

tests/console-encoding-01-basic.cs

100644100755
File mode changed.

tests/rich-input-01-basic.cs

100644100755
File mode changed.

tests/table-widget-06-emoji.cs

100644100755
File mode changed.

0 commit comments

Comments
 (0)