code: func readVersionFile(path string) (Info, error) {
  	f, err := os.Open(path)
  	if err != nil {
  		if os.IsNotExist(err) {
  			err = nil
  		}
  		return Info{}, err
  	}
  	defer f.Close()
  	out := Info{}
  	if err = json.NewDecoder(f).Decode(&out); err != nil {
  		return Info{}, err
  	}
  	return out, nil
  }
docs: // readVersionFile returns parsed version file. Returns empty struct and nil if
  // it is missing, error if it can't be read.