resource/resource_list_genny.go
// +build genny package resource import ( "encoding/json" "fmt" "reflect" "strings" "github.com/SimonBaeumer/goss/system" "github.com/SimonBaeumer/goss/util" "github.com/cheekybits/genny/generic") //go:generate genny -in=$GOFILE -out=resource_list.go gen "ResourceType=Addr,Command,DNS,File,Gossfile,Group,Package,Port,Process,Service,User,KernelParam,Mount,Interface,HTTP"//go:generate sed -i -e "/^\\/\\/ +build genny/d" resource_list.go//go:generate goimports -w resource_list.go resource_list.go type ResourceType generic.Type type ResourceTypeMap map[string]*ResourceType Similar blocks of code found in 14 locations. Consider refactoring.func (r ResourceTypeMap) AppendSysResource(sr string, sys *system.System, config util.Config) (*ResourceType, error) { sysres := sys.NewResourceType(sr, sys, config) res, err := NewResourceType(sysres, config) if err != nil { return nil, err } if old_res, ok := r[res.ID()]; ok { res.Title = old_res.Title res.Meta = old_res.Meta } r[res.ID()] = res return res, nil} Similar blocks of code found in 15 locations. Consider refactoring.func (r ResourceTypeMap) AppendSysResourceIfExists(sr string, sys *system.System) (*ResourceType, system.ResourceType, bool) { sysres := sys.NewResourceType(sr, sys, util.Config{}) // FIXME: Do we want to be silent about errors? res, _ := NewResourceType(sysres, util.Config{}) if e, _ := sysres.Exists(); e != true { return res, sysres, false } if old_res, ok := r[res.ID()]; ok { res.Title = old_res.Title res.Meta = old_res.Meta } r[res.ID()] = res return res, sysres, true} Method `ResourceTypeMap.UnmarshalJSON` has 7 return statements (exceeds 4 allowed).
Similar blocks of code found in 17 locations. Consider refactoring.func (ret *ResourceTypeMap) UnmarshalJSON(data []byte) error { // Curried json.Unmarshal unmarshal := func(i interface{}) error { if err := json.Unmarshal(data, i); err != nil { return err } return nil } // Validate configuration zero := ResourceType{} whitelist, err := util.WhitelistAttrs(zero, util.JSON) if err != nil { return err } if err := util.ValidateSections(unmarshal, zero, whitelist); err != nil { return err } var tmp map[string]*ResourceType if err := unmarshal(&tmp); err != nil { return err } typ := reflect.TypeOf(zero) typs := strings.Split(typ.String(), ".")[1] for id, res := range tmp { if res == nil { return fmt.Errorf("Could not parse resource %s:%s", typs, id) } res.SetID(id) } *ret = tmp return nil} Method `ResourceTypeMap.UnmarshalYAML` has 5 return statements (exceeds 4 allowed).
Similar blocks of code found in 17 locations. Consider refactoring.func (ret *ResourceTypeMap) UnmarshalYAML(unmarshal func(v interface{}) error) error { // Validate configuration zero := ResourceType{} whitelist, err := util.WhitelistAttrs(zero, util.YAML) if err != nil { return err } if err := util.ValidateSections(unmarshal, zero, whitelist); err != nil { return err } var tmp map[string]*ResourceType if err := unmarshal(&tmp); err != nil { return err } typ := reflect.TypeOf(zero) typs := strings.Split(typ.String(), ".")[1] for id, res := range tmp { if res == nil { return fmt.Errorf("Could not parse resource %s:%s", typs, id) } res.SetID(id) } *ret = tmp return nil}