github.com/jcarley/cli@v0.0.0-20180201210820-966d90434c30/commands/images/targets/status.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  	"github.com/docker/notary/client/changelist"
     9  )
    10  
    11  func cmdTargetsStatus(envID, imageName string, user *models.User, ie environments.IEnvironments, ii images.IImages) error {
    12  	env, err := ie.Retrieve(envID)
    13  	if err != nil {
    14  		return err
    15  	}
    16  
    17  	repositoryName, tag, err := ii.GetGloballyUniqueNamespace(imageName, env, true)
    18  	if err != nil {
    19  		return err
    20  	}
    21  	repo := ii.GetNotaryRepository(env.Pod, repositoryName, user)
    22  	changelist, err := repo.GetChangelist()
    23  	if err != nil {
    24  		return err
    25  	}
    26  	changes := filterChanges(changelist.List(), tag)
    27  	if len(changes) > 0 {
    28  		ii.PrintChangelist(changes)
    29  	} else {
    30  		logrus.Printf("No unpublished changes for %s\n", repositoryName)
    31  	}
    32  	return nil
    33  }
    34  
    35  func filterChanges(changes []changelist.Change, tag string) (filteredList []changelist.Change) {
    36  	if tag == "" {
    37  		return changes
    38  	}
    39  	for _, change := range changes {
    40  		if change.Path() == tag {
    41  			filteredList = append(filteredList, change)
    42  		}
    43  	}
    44  	return filteredList
    45  }