github.com/bingoohuang/pkger@v0.0.0-20210127185155-a71b9df4c4c7/cmd/pkger/cmds/serve.go (about) 1 package cmds 2 3 import ( 4 "flag" 5 "fmt" 6 "net/http" 7 8 "github.com/bingoohuang/pkger" 9 ) 10 11 type arrayFlags []string 12 13 func (i arrayFlags) String() string { 14 return fmt.Sprintf("%s", []string(i)) 15 } 16 17 func (i *arrayFlags) Set(value string) error { 18 *i = append(*i, value) 19 return nil 20 } 21 22 type serveCmd struct { 23 *flag.FlagSet 24 excludes arrayFlags 25 } 26 27 func (s *serveCmd) Name() string { 28 return s.Flags().Name() 29 } 30 31 func (f *serveCmd) Flags() *flag.FlagSet { 32 if f.FlagSet == nil { 33 f.FlagSet = flag.NewFlagSet("serve", flag.ExitOnError) 34 f.Var(&f.excludes, "exclude", "slice of regexp patterns to exclude") 35 } 36 return f.FlagSet 37 } 38 39 var defaultExcludes = []string{"testdata", "node_modules", "(\\/|\\\\)_.+", "(\\/|\\\\)\\.git.*", ".DS_Store"} 40 41 func (s *serveCmd) Exec(args []string) error { 42 if len(args) == 0 { 43 args = []string{"."} 44 } 45 46 f, err := pkger.Open(args[0]) 47 if err != nil { 48 return err 49 } 50 51 // TODO 52 // ex := append(defaultExcludes, s.excludes...) 53 // if err := pkger.Exclude(f, ex...); err != nil { 54 // return err 55 // } 56 defer f.Close() 57 fmt.Println(f.Path()) 58 59 return http.ListenAndServe(":3000", http.FileServer(f)) 60 }