packer: Add Machine func to Ui
This commit is contained in:
parent
7004813a1f
commit
fb6d2754da
|
@ -17,6 +17,12 @@ type UiServer struct {
|
||||||
ui packer.Ui
|
ui packer.Ui
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The arguments sent to Ui.Machine
|
||||||
|
type UiMachineArgs struct {
|
||||||
|
category string
|
||||||
|
args []string
|
||||||
|
}
|
||||||
|
|
||||||
func (u *Ui) Ask(query string) (result string, err error) {
|
func (u *Ui) Ask(query string) (result string, err error) {
|
||||||
err = u.client.Call("Ui.Ask", query, &result)
|
err = u.client.Call("Ui.Ask", query, &result)
|
||||||
return
|
return
|
||||||
|
@ -28,6 +34,17 @@ func (u *Ui) Error(message string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *Ui) Machine(t string, args ...string) {
|
||||||
|
rpcArgs := &UiMachineArgs{
|
||||||
|
category: t,
|
||||||
|
args: args,
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := u.client.Call("Ui.Message", rpcArgs, new(interface{})); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (u *Ui) Message(message string) {
|
func (u *Ui) Message(message string) {
|
||||||
if err := u.client.Call("Ui.Message", message, new(interface{})); err != nil {
|
if err := u.client.Call("Ui.Message", message, new(interface{})); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@ -52,6 +69,13 @@ func (u *UiServer) Error(message *string, reply *interface{}) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *UiServer) Machine(args *UiMachineArgs, reply *interface{}) error {
|
||||||
|
u.ui.Machine(args.category, args.args...)
|
||||||
|
|
||||||
|
*reply = nil
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (u *UiServer) Message(message *string, reply *interface{}) error {
|
func (u *UiServer) Message(message *string, reply *interface{}) error {
|
||||||
u.ui.Message(*message)
|
u.ui.Message(*message)
|
||||||
*reply = nil
|
*reply = nil
|
||||||
|
|
|
@ -11,6 +11,9 @@ type testUi struct {
|
||||||
askQuery string
|
askQuery string
|
||||||
errorCalled bool
|
errorCalled bool
|
||||||
errorMessage string
|
errorMessage string
|
||||||
|
machineCalled bool
|
||||||
|
machineType string
|
||||||
|
machineArgs []string
|
||||||
messageCalled bool
|
messageCalled bool
|
||||||
messageMessage string
|
messageMessage string
|
||||||
sayCalled bool
|
sayCalled bool
|
||||||
|
@ -28,6 +31,12 @@ func (u *testUi) Error(message string) {
|
||||||
u.errorMessage = message
|
u.errorMessage = message
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *testUi) Machine(t string, args ...string) {
|
||||||
|
u.machineCalled = true
|
||||||
|
u.machineType = t
|
||||||
|
u.machineArgs = args
|
||||||
|
}
|
||||||
|
|
||||||
func (u *testUi) Message(message string) {
|
func (u *testUi) Message(message string) {
|
||||||
u.messageCalled = true
|
u.messageCalled = true
|
||||||
u.messageMessage = message
|
u.messageMessage = message
|
||||||
|
|
15
packer/ui.go
15
packer/ui.go
|
@ -33,6 +33,7 @@ type Ui interface {
|
||||||
Say(string)
|
Say(string)
|
||||||
Message(string)
|
Message(string)
|
||||||
Error(string)
|
Error(string)
|
||||||
|
Machine(string, ...string)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ColoredUi is a UI that is colored using terminal colors.
|
// ColoredUi is a UI that is colored using terminal colors.
|
||||||
|
@ -80,6 +81,11 @@ func (u *ColoredUi) Error(message string) {
|
||||||
u.Ui.Error(u.colorize(message, color, true))
|
u.Ui.Error(u.colorize(message, color, true))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *ColoredUi) Machine(t string, args ...string) {
|
||||||
|
// Don't colorize machine-readable output
|
||||||
|
u.Ui.Machine(t, args...)
|
||||||
|
}
|
||||||
|
|
||||||
func (u *ColoredUi) colorize(message string, color UiColor, bold bool) string {
|
func (u *ColoredUi) colorize(message string, color UiColor, bold bool) string {
|
||||||
if !u.supportsColors() {
|
if !u.supportsColors() {
|
||||||
return message
|
return message
|
||||||
|
@ -123,6 +129,11 @@ func (u *PrefixedUi) Error(message string) {
|
||||||
u.Ui.Error(u.prefixLines(u.SayPrefix, message))
|
u.Ui.Error(u.prefixLines(u.SayPrefix, message))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *PrefixedUi) Machine(t string, args ...string) {
|
||||||
|
// Just pass it through for now.
|
||||||
|
u.Ui.Machine(t, args...)
|
||||||
|
}
|
||||||
|
|
||||||
func (u *PrefixedUi) prefixLines(prefix, message string) string {
|
func (u *PrefixedUi) prefixLines(prefix, message string) string {
|
||||||
var result bytes.Buffer
|
var result bytes.Buffer
|
||||||
|
|
||||||
|
@ -209,3 +220,7 @@ func (rw *ReaderWriterUi) Error(message string) {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rw *ReaderWriterUi) Machine(t string, args ...string) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
|
@ -106,6 +106,9 @@ func (su *stubUi) Ask(string) (string, error) {
|
||||||
func (su *stubUi) Error(string) {
|
func (su *stubUi) Error(string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (su *stubUi) Machine(string, ...string) {
|
||||||
|
}
|
||||||
|
|
||||||
func (su *stubUi) Message(string) {
|
func (su *stubUi) Message(string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue