github.com/hhsnopek/up@v0.1.1/internal/cli/start/start.go (about) 1 package start 2 3 import ( 4 "net/http" 5 6 "github.com/apex/log" 7 "github.com/pkg/errors" 8 "github.com/tj/kingpin" 9 10 "github.com/apex/up/handler" 11 "github.com/apex/up/internal/cli/root" 12 "github.com/apex/up/internal/stats" 13 ) 14 15 func init() { 16 cmd := root.Command("start", "Start development server.") 17 cmd.Example(`up start`, "Start development server on port 3000.") 18 cmd.Example(`up start --address :5000`, "Start development server on port 5000.") 19 20 addr := cmd.Flag("address", "Address for server.").Default(":3000").String() 21 22 cmd.Action(func(_ *kingpin.ParseContext) error { 23 stats.Track("Start", map[string]interface{}{ 24 "address": *addr, 25 }) 26 27 h, err := handler.New() 28 if err != nil { 29 return errors.Wrap(err, "initializing handler") 30 } 31 32 log.WithField("address", *addr).Infof("listening") 33 if err := http.ListenAndServe(*addr, h); err != nil { 34 return errors.Wrap(err, "binding") 35 } 36 37 return nil 38 }) 39 }