forked from keybase/client
/
warning.go
56 lines (43 loc) · 924 Bytes
/
warning.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
// Copyright 2015 Keybase, Inc. All rights reserved. Use of
// this source code is governed by the included BSD license.
package libkb
import (
"fmt"
)
type Warning interface {
Warning() string
Warn(g *GlobalContext)
}
type StringWarning string
func (s StringWarning) Warning() string {
return string(s)
}
func Warningf(format string, a ...interface{}) Warning {
return StringWarning(fmt.Sprintf(format, a...))
}
func (s StringWarning) Warn(g *GlobalContext) {
g.Log.Warning(string(s))
}
func ErrorToWarning(e error) Warning {
if e == nil {
return nil
}
return StringWarning(e.Error())
}
type Warnings struct {
w []Warning
}
func (w Warnings) Warnings() []Warning {
return w.w
}
func (w Warnings) IsEmpty() bool {
return w.w == nil || len(w.w) == 0
}
func (w *Warnings) Push(e Warning) {
w.w = append(w.w, e)
}
func (w Warnings) Warn(g *GlobalContext) {
for _, e := range w.w {
e.Warn(g)
}
}