github.com/jcarley/cli@v0.0.0-20180201210820-966d90434c30/commands/images/targets/reset.go (about)

     1  package targets
     2  
     3  import (
     4  	"github.com/Sirupsen/logrus"
     5  	"github.com/daticahealth/cli/commands/environments"
     6  	"github.com/daticahealth/cli/lib/images"
     7  	"github.com/daticahealth/cli/models"
     8  )
     9  
    10  const (
    11  	improperImageName = "Improperly formatted image name. Follow the convention <image>:<tag>"
    12  )
    13  
    14  func cmdTargetsReset(envID, imageName string, user *models.User, ie environments.IEnvironments, ii images.IImages) error {
    15  	env, err := ie.Retrieve(envID)
    16  	if err != nil {
    17  		return err
    18  	}
    19  
    20  	repositoryName, tag, err := ii.GetGloballyUniqueNamespace(imageName, env, true)
    21  	if err != nil {
    22  		return err
    23  	}
    24  	repo := ii.GetNotaryRepository(env.Pod, repositoryName, user)
    25  
    26  	changelist, err := repo.GetChangelist()
    27  	if err != nil {
    28  		return err
    29  	}
    30  	changes := changelist.List()
    31  	if len(changes) > 0 {
    32  		if tag != "" {
    33  			var indices []int
    34  			for i, change := range changes {
    35  				if change.Path() == tag {
    36  					indices = append(indices, i)
    37  				}
    38  			}
    39  			err := changelist.Remove(indices)
    40  			if err != nil {
    41  				return err
    42  			}
    43  			logrus.Printf("Local changelist cleared for target \"%s\" in trust repository %s", tag, repositoryName)
    44  			return nil
    45  		} else {
    46  			err := changelist.Clear("")
    47  			if err != nil {
    48  				return err
    49  			}
    50  		}
    51  		logrus.Printf("Local changelist cleared for trust repository %s", repositoryName)
    52  		return nil
    53  	}
    54  	logrus.Printf("No unpublished changes for trust repository %s\n", repositoryName)
    55  	return nil
    56  }