github.com/yoheimuta/protolint@v0.49.8-0.20240515023657-4ecaebb7575d/linter/visitor/baseFixableVisitor.go (about) 1 package visitor 2 3 import ( 4 "github.com/yoheimuta/go-protoparser/v4/parser" 5 "github.com/yoheimuta/protolint/linter/fixer" 6 ) 7 8 // BaseFixableVisitor represents a base visitor which can fix failures. 9 type BaseFixableVisitor struct { 10 *BaseAddVisitor 11 12 Fixer fixer.Fixer 13 finallyFn func() error 14 } 15 16 // NewBaseFixableVisitor creates a BaseFixableVisitor. 17 func NewBaseFixableVisitor( 18 ruleID string, 19 fixMode bool, 20 proto *parser.Proto, 21 severity string, 22 ) (*BaseFixableVisitor, error) { 23 f, err := fixer.NewFixing(fixMode, proto) 24 if err != nil { 25 return nil, err 26 } 27 return &BaseFixableVisitor{ 28 BaseAddVisitor: NewBaseAddVisitor(ruleID, severity), 29 Fixer: f, 30 finallyFn: f.Finally, 31 }, nil 32 } 33 34 // Finally fixes the proto file by overwriting it. 35 func (v *BaseFixableVisitor) Finally() error { 36 err := v.finallyFn() 37 if err != nil { 38 return err 39 } 40 return v.BaseAddVisitor.Finally() 41 }