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  }