github.com/segakazzz/buffalo@v0.16.22-0.20210119082501-1f52048d3feb/genny/info/app.go (about) 1 package info 2 3 import ( 4 "fmt" 5 "reflect" 6 7 "github.com/gobuffalo/genny/v2" 8 ) 9 10 func appDetails(opts *Options) genny.RunFn { 11 return func(r *genny.Runner) error { 12 opts.Out.Header("Buffalo: Application Details") 13 rv := reflect.ValueOf(opts.App) 14 rt := rv.Type() 15 16 var lines [][]string 17 for i := 0; i < rt.NumField(); i++ { 18 f := rt.Field(i) 19 if !rv.FieldByName(f.Name).CanInterface() { 20 continue 21 } 22 23 v := rv.FieldByName(f.Name).Interface() 24 line := []string{f.Name, fmt.Sprint(v)} 25 26 lines = append(lines, line) 27 } 28 err := opts.Out.Tabs(lines) 29 if err != nil { 30 return err 31 } 32 return opts.Out.WriteString("\n") 33 } 34 }