summaryrefslogtreecommitdiff
path: root/internal/askcli/taskexec.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-10 22:47:34 +0300
committerPaul Buetow <paul@buetow.org>2026-04-10 22:47:34 +0300
commitea9e7c0225f6af8179890516b5ce9d511dadb234 (patch)
treee5d64837c8823d315af40162cf5f10491a06b755 /internal/askcli/taskexec.go
parentbd749f8e9a0eeaa5578a368996f7b93955580a39 (diff)
task 30: add proj prefix override for do
Diffstat (limited to 'internal/askcli/taskexec.go')
-rw-r--r--internal/askcli/taskexec.go23
1 files changed, 17 insertions, 6 deletions
diff --git a/internal/askcli/taskexec.go b/internal/askcli/taskexec.go
index e3915d9..d479c34 100644
--- a/internal/askcli/taskexec.go
+++ b/internal/askcli/taskexec.go
@@ -35,9 +35,17 @@ func NewExecutor(commandName string) Executor {
}
func (e Executor) taskArgs(ctx context.Context, repoRoot string, args []string) ([]string, error) {
- projectName, err := projectNameFromRoot(repoRoot)
- if err != nil {
- return nil, err
+ projectName, ok := taskProjectFromContext(ctx)
+ if !ok {
+ var err error
+ projectName, err = projectNameFromRoot(repoRoot)
+ if err != nil {
+ return nil, err
+ }
+ }
+ projectName = strings.TrimSpace(projectName)
+ if projectName == "" {
+ return nil, fmt.Errorf("project override proj:<name> requires a project name")
}
// rc.verbose=nothing suppresses Taskwarrior's configuration override
// banner, while rc.confirmation=off keeps non-interactive commands from
@@ -69,9 +77,12 @@ func (e Executor) Run(ctx context.Context, args []string, stdin io.Reader, stdou
if err != nil {
return 1, fmt.Errorf("%s: task binary lookup failed: %w", executor.label(), err)
}
- repoRoot, err := executor.detectRepoRoot(ctx)
- if err != nil {
- return 1, fmt.Errorf("%s: must be run inside a git repository: %w", executor.label(), err)
+ repoRoot := ""
+ if _, ok := taskProjectFromContext(ctx); !ok {
+ repoRoot, err = executor.detectRepoRoot(ctx)
+ if err != nil {
+ return 1, fmt.Errorf("%s: must be run inside a git repository: %w", executor.label(), err)
+ }
}
taskArgs, err := executor.taskArgs(ctx, repoRoot, args)
if err != nil {