github.com/webonyx/up@v0.7.4-0.20180808230834-91b94e551323/internal/cli/prune/prune.go (about) 1 package prune 2 3 import ( 4 "github.com/pkg/errors" 5 "github.com/tj/kingpin" 6 7 "github.com/apex/up/internal/cli/root" 8 "github.com/apex/up/internal/stats" 9 ) 10 11 func init() { 12 cmd := root.Command("prune", "Prune old S3 deployments of a stage.") 13 14 cmd.Example(`up prune`, "Prune and retain the most recent 30 staging versions.") 15 cmd.Example(`up prune -s production`, "Prune and retain the most recent 30 production versions.") 16 cmd.Example(`up prune -s production -r 15`, "Prune and retain the most recent 15 production versions.") 17 18 stage := cmd.Flag("stage", "Target stage name.").Short('s').Default("staging").String() 19 versions := cmd.Flag("retain", "Number of versions to retain.").Short('r').Default("30").Int() 20 21 cmd.Action(func(_ *kingpin.ParseContext) error { 22 c, p, err := root.Init() 23 if err != nil { 24 return errors.Wrap(err, "initializing") 25 } 26 27 region := c.Regions[0] 28 29 stats.Track("Prune", map[string]interface{}{ 30 "versions": *versions, 31 "stage": *stage, 32 }) 33 34 return p.Prune(region, *stage, *versions) 35 }) 36 }