-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclean.cs
More file actions
59 lines (49 loc) · 2.04 KB
/
clean.cs
File metadata and controls
59 lines (49 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#region Purpose
// Development CLI for TimeWarp.Terminal repository operations
#endregion
// ═══════════════════════════════════════════════════════════════════════════════
// CLEAN COMMAND
// ═══════════════════════════════════════════════════════════════════════════════
// Clean solution and artifacts
namespace DevCli;
/// <summary>
/// Clean solution and artifacts
/// </summary>
[NuruRoute("clean", Description = "Clean solution and artifacts")]
internal sealed class CleanCommand : ICommand<Unit>
{
internal sealed class Handler : ICommandHandler<CleanCommand, Unit>
{
private readonly ITerminal Terminal;
public Handler(ITerminal terminal)
{
Terminal = terminal;
}
public async ValueTask<Unit> Handle(CleanCommand command, CancellationToken ct)
{
string repoRoot = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..", "..", "..", ".."));
if (!File.Exists(Path.Combine(repoRoot, "timewarp-terminal.slnx")))
{
repoRoot = Path.GetFullPath(Directory.GetCurrentDirectory());
}
Terminal.WriteLine("Cleaning solution...");
int exitCode = await Shell.Builder("dotnet")
.WithArguments("clean", Path.Combine(repoRoot, "timewarp-terminal.slnx"), "-v", "q")
.WithWorkingDirectory(repoRoot)
.RunAsync();
if (exitCode != 0)
{
throw new InvalidOperationException("Clean failed!");
}
// Clean artifacts directory
string artifactsDir = Path.Combine(repoRoot, "artifacts");
if (Directory.Exists(artifactsDir))
{
Directory.Delete(artifactsDir, recursive: true);
Terminal.WriteLine("Cleaned artifacts/");
}
Terminal.WriteLine("\n✓ Clean completed");
return Unit.Value;
}
}
}