github.com/bingoohuang/pkger@v0.0.0-20210127185155-a71b9df4c4c7/cmd/pkger/cmds/stat.go (about) 1 package cmds 2 3 import ( 4 "flag" 5 "fmt" 6 7 "github.com/bingoohuang/pkger" 8 "github.com/bingoohuang/pkger/pkging" 9 ) 10 11 type statCmd struct { 12 *flag.FlagSet 13 } 14 15 func (s *statCmd) Name() string { 16 return s.Flags().Name() 17 } 18 19 func (f *statCmd) Flags() *flag.FlagSet { 20 if f.FlagSet == nil { 21 f.FlagSet = flag.NewFlagSet("stat", flag.ExitOnError) 22 } 23 return f.FlagSet 24 } 25 26 func (f *statCmd) Exec(args []string) error { 27 if len(args) == 0 { 28 args = []string{"."} 29 } 30 for _, a := range args { 31 f, err := pkger.Open(a) 32 if err != nil { 33 return err 34 } 35 defer f.Close() 36 37 fi, err := f.Stat() 38 if err != nil { 39 return err 40 } 41 42 if fi.IsDir() { 43 files, err := f.Readdir(-1) 44 if err != nil { 45 return err 46 } 47 for _, ff := range files { 48 fmt.Println(pkging.NewFileInfo(ff)) 49 } 50 continue 51 } 52 53 fmt.Println(pkging.NewFileInfo(fi)) 54 } 55 56 return nil 57 }