code: func (f *nameFetcher) Hash(app *discovery.App, a *asc) (string, error) {
  	ensureLogger(f.Debug)
  	name := app.Name.String()
  	diag.Printf("searching for app image %s", name)
  	ep, err := f.discoverApp(app)
  	if err != nil {
  		return "", errwrap.Wrap(fmt.Errorf("discovery failed for %q", name), err)
  	}
  	latest := false
  	// No specified version label, mark it as latest
  	if _, ok := app.Labels["version"]; !ok {
  		latest = true
  	}
  	return f.fetchImageFromEndpoints(app, ep, a, latest)
  }
docs: // Hash runs the discovery, fetches the image, optionally verifies
  // it against passed asc, stores it in the store and returns the hash.