From 94d6fc10f5a754041889b14a480192ce8c8c748b Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Wed, 6 Mar 2019 15:52:59 +0100 Subject: [PATCH] init tty in main --- main.go | 7 +++++++ packer/ui.go | 14 ++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/main.go b/main.go index e7f750e2d..e47ea05e1 100644 --- a/main.go +++ b/main.go @@ -23,6 +23,7 @@ import ( "github.com/hashicorp/packer/packer/plugin" "github.com/hashicorp/packer/packer/tmp" "github.com/hashicorp/packer/version" + "github.com/mattn/go-tty" "github.com/mitchellh/cli" "github.com/mitchellh/panicwrap" "github.com/mitchellh/prefixedio" @@ -185,11 +186,17 @@ func wrappedMain() int { defer plugin.CleanupClients() + tty, err := tty.Open() + if err != nil { + log.Printf("running packer without a tty: %s", err) + } + // Setup the UI if we're being machine-readable var ui packer.Ui = &packer.BasicUi{ Reader: os.Stdin, Writer: os.Stdout, ErrorWriter: os.Stdout, + TTY: tty, } if machineReadable { ui = &packer.MachineReadableUi{ diff --git a/packer/ui.go b/packer/ui.go index 64dcea48d..cc4128a07 100644 --- a/packer/ui.go +++ b/packer/ui.go @@ -14,8 +14,6 @@ import ( "syscall" "time" "unicode" - - "github.com/mattn/go-tty" ) type UiColor uint @@ -82,7 +80,7 @@ type BasicUi struct { ErrorWriter io.Writer l sync.Mutex interrupted bool - tty TTY + TTY TTY StackableProgressBar } @@ -210,12 +208,8 @@ func (rw *BasicUi) Ask(query string) (string, error) { return "", errors.New("interrupted") } - if rw.tty == nil { - var err error - rw.tty, err = tty.Open() - if err != nil { - return "", fmt.Errorf("tty open: %s", err) - } + if rw.TTY == nil { + return "", errors.New("no available tty") } sigCh := make(chan os.Signal, 1) signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM) @@ -230,7 +224,7 @@ func (rw *BasicUi) Ask(query string) (string, error) { result := make(chan string, 1) go func() { - line, err := rw.tty.ReadString() + line, err := rw.TTY.ReadString() if err != nil { log.Printf("ui: scan err: %s", err) return