mirror of
https://github.com/go-task/task.git
synced 2025-06-08 23:56:21 +02:00
fix(remote): wait for prompt in the reader (#1833)
This commit is contained in:
parent
38d0fc2c55
commit
30c59bf387
@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/dominikbraun/graph"
|
"github.com/dominikbraun/graph"
|
||||||
@ -30,14 +31,15 @@ Continue?`
|
|||||||
// A Reader will recursively read Taskfiles from a given source using a directed
|
// A Reader will recursively read Taskfiles from a given source using a directed
|
||||||
// acyclic graph (DAG).
|
// acyclic graph (DAG).
|
||||||
type Reader struct {
|
type Reader struct {
|
||||||
graph *ast.TaskfileGraph
|
graph *ast.TaskfileGraph
|
||||||
node Node
|
node Node
|
||||||
insecure bool
|
insecure bool
|
||||||
download bool
|
download bool
|
||||||
offline bool
|
offline bool
|
||||||
timeout time.Duration
|
timeout time.Duration
|
||||||
tempDir string
|
tempDir string
|
||||||
logger *logger.Logger
|
logger *logger.Logger
|
||||||
|
promptMutex sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewReader(
|
func NewReader(
|
||||||
@ -50,14 +52,15 @@ func NewReader(
|
|||||||
logger *logger.Logger,
|
logger *logger.Logger,
|
||||||
) *Reader {
|
) *Reader {
|
||||||
return &Reader{
|
return &Reader{
|
||||||
graph: ast.NewTaskfileGraph(),
|
graph: ast.NewTaskfileGraph(),
|
||||||
node: node,
|
node: node,
|
||||||
insecure: insecure,
|
insecure: insecure,
|
||||||
download: download,
|
download: download,
|
||||||
offline: offline,
|
offline: offline,
|
||||||
timeout: timeout,
|
timeout: timeout,
|
||||||
tempDir: tempDir,
|
tempDir: tempDir,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
|
promptMutex: sync.Mutex{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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
|
// 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())
|
prompt = fmt.Sprintf(taskfileChangedPrompt, node.Location())
|
||||||
}
|
}
|
||||||
|
|
||||||
if prompt != "" {
|
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()}
|
return nil, &errors.TaskfileNotTrustedError{URI: node.Location()}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the hash has changed (or is new)
|
// If the hash has changed (or is new)
|
||||||
if checksum != cachedChecksum {
|
if checksum != cachedChecksum {
|
||||||
// Store the checksum
|
// Store the checksum
|
||||||
|
Loading…
x
Reference in New Issue
Block a user