Skip to content

Commit

Permalink
fix(remote): wait for prompt in the reader (#1833)
Browse files Browse the repository at this point in the history
  • Loading branch information
vmaerten authored Sep 24, 2024
1 parent 38d0fc2 commit 30c59bf
Showing 1 changed file with 25 additions and 18 deletions.
43 changes: 25 additions & 18 deletions taskfile/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"fmt"
"os"
"sync"
"time"

"github.com/dominikbraun/graph"
Expand All @@ -30,14 +31,15 @@ Continue?`
// A Reader will recursively read Taskfiles from a given source using a directed
// acyclic graph (DAG).
type Reader struct {
graph *ast.TaskfileGraph
node Node
insecure bool
download bool
offline bool
timeout time.Duration
tempDir string
logger *logger.Logger
graph *ast.TaskfileGraph
node Node
insecure bool
download bool
offline bool
timeout time.Duration
tempDir string
logger *logger.Logger
promptMutex sync.Mutex
}

func NewReader(
Expand All @@ -50,14 +52,15 @@ func NewReader(
logger *logger.Logger,
) *Reader {
return &Reader{
graph: ast.NewTaskfileGraph(),
node: node,
insecure: insecure,
download: download,
offline: offline,
timeout: timeout,
tempDir: tempDir,
logger: logger,
graph: ast.NewTaskfileGraph(),
node: node,
insecure: insecure,
download: download,
offline: offline,
timeout: timeout,
tempDir: tempDir,
logger: logger,
promptMutex: sync.Mutex{},
}
}

Expand Down Expand Up @@ -244,12 +247,16 @@ func (r *Reader) readNode(node Node) (*ast.Taskfile, error) {
// If there is a cached hash, but it doesn't match the expected hash, prompt the user to continue
prompt = fmt.Sprintf(taskfileChangedPrompt, node.Location())
}

if prompt != "" {
if err := r.logger.Prompt(logger.Yellow, prompt, "n", "y", "yes"); err != nil {
if err := func() error {
r.promptMutex.Lock()
defer r.promptMutex.Unlock()
return r.logger.Prompt(logger.Yellow, prompt, "n", "y", "yes")
}(); err != nil {
return nil, &errors.TaskfileNotTrustedError{URI: node.Location()}
}
}

// If the hash has changed (or is new)
if checksum != cachedChecksum {
// Store the checksum
Expand Down

0 comments on commit 30c59bf

Please sign in to comment.