Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions IMPROVEMENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -679,6 +679,13 @@ public class AuditLogger
4. ✅ Task caching (based on input file hashes with `--no-cache` bypass)
5. ✅ Plugin system (ITaskTypeProvider interface and PluginLoader)

### Phase 4 (Developer Experience & Code Quality) ✅ COMPLETED
1. ✅ Task Aliases - Create shortcuts for common task combinations (`aliases` in config)
2. ✅ Shell Completions - Generate shell completions (`rot completion bash|zsh|fish|powershell`)
3. ✅ Config File Auto-Discovery - Search up directory tree for tasks file
4. ✅ Task Graph Visualization - Show task dependency graph (`rot graph [task]`)
5. ✅ Result Pattern for Error Handling - `TaskResult` and `TasksResult` types with `ExecuteTaskWithResultAsync`

---

## Related Resources
Expand Down
8 changes: 4 additions & 4 deletions Rot.Tests/Phase3Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ public async Task ExecuteTaskAsync_WithProfileEnv_AppliesEnvironment()
{
["PROFILE_VAR"] = "profile-value"
};
var executor = new TaskExecutor(tasks, profileEnv: profileEnv);
var executor = new TaskExecutor(tasks, aliases: null, profileEnv: profileEnv);

var result = await executor.ExecuteTaskAsync("check-env");

Expand All @@ -344,7 +344,7 @@ public async Task ExecuteTaskAsync_TaskEnvOverridesProfileEnv()
{
["OVERRIDE_VAR"] = "profile-value"
};
var executor = new TaskExecutor(tasks, profileEnv: profileEnv);
var executor = new TaskExecutor(tasks, aliases: null, profileEnv: profileEnv);

var result = await executor.ExecuteTaskAsync("check-env");

Expand Down Expand Up @@ -530,15 +530,15 @@ public async Task ExecuteTaskAsync_NoCacheFlag_BypassesCache()
};

// First run with cache
var executor1 = new TaskExecutor(tasks, noCache: false);
var executor1 = new TaskExecutor(tasks, aliases: null, noCache: false);
await executor1.ExecuteTaskAsync("cached-task");

// Delete output file
if (File.Exists(outputFile))
File.Delete(outputFile);

// Second run with noCache - should execute
var executor2 = new TaskExecutor(tasks, noCache: true);
var executor2 = new TaskExecutor(tasks, aliases: null, noCache: true);
await executor2.ExecuteTaskAsync("cached-task");

Assert.True(File.Exists(outputFile));
Expand Down
Loading
Loading