summaryrefslogtreecommitdiff
path: root/internal/askcli/command_projects.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-18 08:05:32 +0300
committerPaul Buetow <paul@buetow.org>2026-06-18 08:05:32 +0300
commita80ad2b4691d0df63f68c6977ee18444e7bb752f (patch)
tree6edc47fcc3c929856826432cf3df3394a14934e8 /internal/askcli/command_projects.go
parent4ffb22e7f69f1c9c79b095d4e60bad3d97aac55b (diff)
ik0 replace remaining test seams with DI
Diffstat (limited to 'internal/askcli/command_projects.go')
-rw-r--r--internal/askcli/command_projects.go23
1 files changed, 17 insertions, 6 deletions
diff --git a/internal/askcli/command_projects.go b/internal/askcli/command_projects.go
index b370f45..26e407f 100644
--- a/internal/askcli/command_projects.go
+++ b/internal/askcli/command_projects.go
@@ -9,15 +9,12 @@ import (
"sort"
)
-var (
- projectsFindTaskBinary = findTaskBinary
- projectsRunTaskCommand = runTaskCommand
-)
+type taskCommandRunner func(context.Context, string, []string, io.Reader, io.Writer, io.Writer) error
func (d *Dispatcher) handleProjects(ctx context.Context, args []string, stdout, stderr io.Writer) (int, error) {
_ = args
- taskPath, err := projectsFindTaskBinary()
+ taskPath, err := d.projectTaskBinary()()
if err != nil {
return 1, fmt.Errorf("ask projects: task binary lookup failed: %w", err)
}
@@ -25,7 +22,7 @@ func (d *Dispatcher) handleProjects(ctx context.Context, args []string, stdout,
scopeFilter := taskScopeFilter(taskScopeFromContext(ctx))
cmdArgs := append([]string{"rc.verbose=nothing", "rc.confirmation=off", scopeFilter, "status:pending", "export"}, args[1:]...)
var outBuf bytes.Buffer
- err = projectsRunTaskCommand(ctx, taskPath, cmdArgs, nil, &outBuf, stderr)
+ err = d.projectTaskCommand()(ctx, taskPath, cmdArgs, nil, &outBuf, stderr)
if err != nil {
return exitCodeFor(err), fmt.Errorf("ask projects: task export failed: %w", err)
}
@@ -65,3 +62,17 @@ func (d *Dispatcher) handleProjects(ctx context.Context, args []string, stdout,
}
return 0, nil
}
+
+func (d *Dispatcher) projectTaskBinary() func() (string, error) {
+ if d != nil && d.findTaskBinary != nil {
+ return d.findTaskBinary
+ }
+ return findTaskBinary
+}
+
+func (d *Dispatcher) projectTaskCommand() taskCommandRunner {
+ if d != nil && d.runTaskCommand != nil {
+ return d.runTaskCommand
+ }
+ return runTaskCommand
+}