func ReadManifest(r io.Reader) (*Manifest, error) {
	data, err := ioutil.ReadAll(r)
	if err != nil {
		return nil, err
	}
	var manifest *Manifest
	if err := yaml.Unmarshal(data, &manifest); err != nil {
		return nil, errors.Annotatef(err, "manifest")
	}
	if manifest == nil {
		return nil, errors.Annotatef(err, "invalid base in manifest")
	}
	return manifest, nil
}
// ReadManifest reads in a Manifest from a charm's manifest.yaml. Some of
// validation is done when unmarshalling the manifest, including
// verification that the base.Name is a supported operating system.  Full
// validation done by calling Validate().
ReadManifest reads in a Manifest from a charm's manifest.yaml. Some of
validation is done when unmarshalling the manifest, including
verification that the base.Name is a supported operating system.  Full
validation done by calling Validate().
// ReadManifest reads in a Manifest from a charm ' s manifest . yaml . Some of // validation is done when unmarshalling the manifest including // verification that the base . Name is a supported operating system . Full // validation done by calling Validate () .
func ReadManifest(r io.Reader) (*Manifest, error) {
	data, err := ioutil.ReadAll(r)
	if err != nil {
		return nil, err
	}
	var manifest *Manifest
	if err := yaml.Unmarshal(data, &manifest); err != nil {
		return nil, errors.Annotatef(err, "manifest")
	}
	if manifest == nil {
		return nil, errors.Annotatef(err, "invalid base in manifest")
	}
	return manifest, nil
}
func ReadManifest ( r io . Reader ) ( * Manifest , error ) { data , err := ioutil . ReadAll ( r ) if err != nil { return nil , err } var manifest * Manifest if err := yaml . Unmarshal ( data , & manifest ) ; err != nil { return nil , errors . Annotatef ( err , " " ) } if manifest == nil { return nil , errors . Annotatef ( err , " " ) } return manifest , nil }
ReadManifest reads in a Manifest from a charm's manifest.yaml.
ReadManifest reads in a Manifest from a charm ' s manifest . yaml .