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  }