/
conf_ui.go
127 lines (99 loc) · 2.58 KB
/
conf_ui.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package ui
import (
boshlog "github.com/cloudfoundry/bosh-utils/logger"
. "github.com/cloudfoundry/bosh-cli/ui/table"
)
type ConfUI struct {
parent UI
isTTY bool
logger boshlog.Logger
showColumns []Header
}
func NewConfUI(logger boshlog.Logger) *ConfUI {
var ui UI
writerUI := NewConsoleUI(logger)
ui = NewPaddingUI(writerUI)
return &ConfUI{
parent: ui,
isTTY: writerUI.IsTTY(),
logger: logger,
}
}
func NewWrappingConfUI(parent UI, logger boshlog.Logger) *ConfUI {
return &ConfUI{
parent: parent,
isTTY: true,
logger: logger,
}
}
func (ui *ConfUI) EnableTTY(force bool) {
if !ui.isTTY && !force {
ui.parent = NewNonTTYUI(ui.parent)
}
}
func (ui *ConfUI) EnableColor() {
ui.parent = NewColorUI(ui.parent)
}
func (ui *ConfUI) EnableJSON() {
ui.parent = NewJSONUI(ui.parent, ui.logger)
}
func (ui *ConfUI) ShowColumns(columns []Header) {
ui.showColumns = columns
}
func (ui *ConfUI) EnableNonInteractive() {
ui.parent = NewNonInteractiveUI(ui.parent)
}
func (ui *ConfUI) ErrorLinef(pattern string, args ...interface{}) {
ui.parent.ErrorLinef(pattern, args...)
}
func (ui *ConfUI) PrintLinef(pattern string, args ...interface{}) {
ui.parent.PrintLinef(pattern, args...)
}
func (ui *ConfUI) BeginLinef(pattern string, args ...interface{}) {
ui.parent.BeginLinef(pattern, args...)
}
func (ui *ConfUI) EndLinef(pattern string, args ...interface{}) {
ui.parent.EndLinef(pattern, args...)
}
func (ui *ConfUI) PrintBlock(block []byte) {
ui.parent.PrintBlock(block)
}
func (ui *ConfUI) PrintErrorBlock(block string) {
ui.parent.PrintErrorBlock(block)
}
func (ui *ConfUI) PrintTable(table Table) {
if len(ui.showColumns) > 0 {
err := table.SetColumnVisibility(ui.showColumns)
if err != nil {
panic(err)
}
}
ui.parent.PrintTable(table)
}
func (ui *ConfUI) PrintTableFiltered(table Table, filterHeader []Header) {
if len(ui.showColumns) > 0 {
err := table.SetColumnVisibilityFiltered(ui.showColumns, filterHeader)
if err != nil {
panic(err)
}
}
ui.parent.PrintTableFiltered(table, filterHeader)
}
func (ui *ConfUI) AskForText(label string) (string, error) {
return ui.parent.AskForText(label)
}
func (ui *ConfUI) AskForChoice(label string, options []string) (int, error) {
return ui.parent.AskForChoice(label, options)
}
func (ui *ConfUI) AskForPassword(label string) (string, error) {
return ui.parent.AskForPassword(label)
}
func (ui *ConfUI) AskForConfirmation() error {
return ui.parent.AskForConfirmation()
}
func (ui *ConfUI) IsInteractive() bool {
return ui.parent.IsInteractive()
}
func (ui *ConfUI) Flush() {
ui.parent.Flush()
}