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  }