packer-cn/packer/ui.go

36 lines
808 B
Go
Raw Normal View History

package packer
import (
"fmt"
"io"
)
// The Ui interface handles all communication for Packer with the outside
// world. This sort of control allows us to strictly control how output
// is formatted and various levels of output.
type Ui interface {
Say(format string, a ...interface{})
2013-05-10 20:01:24 -04:00
Error(format string, a ...interface{})
}
// The ReaderWriterUi is a UI that writes and reads from standard Go
// io.Reader and io.Writer.
type ReaderWriterUi struct {
Reader io.Reader
Writer io.Writer
}
func (rw *ReaderWriterUi) Say(format string, a ...interface{}) {
2013-05-21 03:56:27 -04:00
_, err := fmt.Fprintf(rw.Writer, format+"\n", a...)
2013-05-08 20:09:10 -04:00
if err != nil {
panic(err)
}
}
2013-05-08 18:12:48 -04:00
func (rw *ReaderWriterUi) Error(format string, a ...interface{}) {
2013-05-21 03:56:27 -04:00
_, err := fmt.Fprintf(rw.Writer, format+"\n", a...)
2013-05-08 20:09:10 -04:00
if err != nil {
panic(err)
}
2013-05-08 18:12:48 -04:00
}