in container_images/registry-image-forked/commands/check.go [44:90]
func (c *Check) Execute() error {
setupLogging(c.stderr)
var req resource.CheckRequest
decoder := json.NewDecoder(c.stdin)
decoder.DisallowUnknownFields()
err := decoder.Decode(&req)
if err != nil {
return fmt.Errorf("invalid payload: %s", err)
}
if req.Source.AwsAccessKeyID != "" && req.Source.AwsSecretAccessKey != "" && req.Source.AwsRegion != "" {
if !req.Source.AuthenticateToECR() {
return fmt.Errorf("cannot authenticate with ECR")
}
}
mirrorSource, hasMirror, err := req.Source.Mirror()
if err != nil {
return fmt.Errorf("failed to resolve mirror: %w", err)
}
var response resource.CheckResponse
if hasMirror {
response, err = check(mirrorSource, req.Version)
if err != nil {
logrus.Warnf("checking mirror %s failed: %s", mirrorSource.Repository, err)
} else if len(response) == 0 {
logrus.Warnf("checking mirror %s failed: tag not found", mirrorSource.Repository)
}
}
if len(response) == 0 {
response, err = check(req.Source, req.Version)
if err != nil {
return fmt.Errorf("checking origin %s failed: %w", req.Source.Repository, err)
}
}
err = json.NewEncoder(c.stdout).Encode(response)
if err != nil {
return fmt.Errorf("could not marshal JSON: %s", err)
}
return nil
}