1// Copyright 2015 Keybase, Inc. All rights reserved. Use of 2// this source code is governed by the included BSD license. 3 4package libkb 5 6import ( 7 "fmt" 8) 9 10type Warning interface { 11 Warning() string 12 Warn(g *GlobalContext) 13} 14 15type StringWarning string 16 17func (s StringWarning) Warning() string { 18 return string(s) 19} 20 21func Warningf(format string, a ...interface{}) Warning { 22 return StringWarning(fmt.Sprintf(format, a...)) 23} 24 25func (s StringWarning) Warn(g *GlobalContext) { 26 g.Log.Warning(string(s)) 27} 28 29func ErrorToWarning(e error) Warning { 30 if e == nil { 31 return nil 32 } 33 return StringWarning(e.Error()) 34} 35 36type Warnings struct { 37 w []Warning 38} 39 40func (w Warnings) Warnings() []Warning { 41 return w.w 42} 43 44func (w Warnings) IsEmpty() bool { 45 return w.w == nil || len(w.w) == 0 46} 47 48func (w *Warnings) Push(e Warning) { 49 w.w = append(w.w, e) 50} 51 52func (w Warnings) Warn(g *GlobalContext) { 53 for _, e := range w.w { 54 e.Warn(g) 55 } 56} 57