packer: Ui error output is red

This commit is contained in:
Mitchell Hashimoto 2013-06-12 10:41:58 -07:00
parent 2217606e38
commit 0f98852d4d
3 changed files with 32 additions and 13 deletions

View File

@ -101,8 +101,8 @@ func (c Command) Run(env packer.Environment, args []string) int {
var ui packer.Ui var ui packer.Ui
ui = &packer.ColoredUi{ ui = &packer.ColoredUi{
colors[i%len(colors)], Color: colors[i%len(colors)],
env.Ui(), Ui: env.Ui(),
} }
ui = &packer.PrefixedUi{ ui = &packer.PrefixedUi{

View File

@ -29,6 +29,7 @@ type Ui interface {
// ColoredUi is a UI that is colored using terminal colors. // ColoredUi is a UI that is colored using terminal colors.
type ColoredUi struct { type ColoredUi struct {
Color UiColor Color UiColor
ErrorColor UiColor
Ui Ui Ui Ui
} }
@ -48,24 +49,29 @@ type ReaderWriterUi struct {
} }
func (u *ColoredUi) Say(message string) { func (u *ColoredUi) Say(message string) {
u.Ui.Say(u.colorize(message, true)) u.Ui.Say(u.colorize(message, u.Color, true))
} }
func (u *ColoredUi) Message(message string) { func (u *ColoredUi) Message(message string) {
u.Ui.Message(u.colorize(message, false)) u.Ui.Message(u.colorize(message, u.Color, false))
} }
func (u *ColoredUi) Error(message string) { func (u *ColoredUi) Error(message string) {
u.Ui.Error(u.colorize(message, false)) color := u.ErrorColor
if color == 0 {
color = UiColorRed
}
u.Ui.Error(u.colorize(message, color, true))
} }
func (u *ColoredUi) colorize(message string, bold bool) string { func (u *ColoredUi) colorize(message string, color UiColor, bold bool) string {
attr := 0 attr := 0
if bold { if bold {
attr = 1 attr = 1
} }
return fmt.Sprintf("\033[%d;%d;40m%s\033[0m", attr, u.Color, message) return fmt.Sprintf("\033[%d;%d;40m%s\033[0m", attr, color, message)
} }
func (u *PrefixedUi) Say(message string) { func (u *PrefixedUi) Say(message string) {

View File

@ -14,13 +14,26 @@ func testUi() *ReaderWriterUi {
} }
func TestColoredUi(t *testing.T) { func TestColoredUi(t *testing.T) {
assert := asserts.NewTestingAsserts(t, true)
bufferUi := testUi() bufferUi := testUi()
ui := &ColoredUi{UiColorRed, bufferUi} ui := &ColoredUi{UiColorYellow, UiColorRed, bufferUi}
ui.Say("foo") ui.Say("foo")
assert.Equal(readWriter(bufferUi), "\033[1;31;40mfoo\033[0m\n", "should have color") result := readWriter(bufferUi)
if result != "\033[1;33;40mfoo\033[0m\n" {
t.Fatalf("invalid output: %s", result)
}
ui.Message("foo")
result = readWriter(bufferUi)
if result != "\033[0;33;40mfoo\033[0m\n" {
t.Fatalf("invalid output: %s", result)
}
ui.Error("foo")
result = readWriter(bufferUi)
if result != "\033[1;31;40mfoo\033[0m\n" {
t.Fatalf("invalid output: %s", result)
}
} }
func TestPrefixedUi(t *testing.T) { func TestPrefixedUi(t *testing.T) {