func ReadCharm(path string) (charm Charm, err error) {
	info, err := os.Stat(path)
	if err != nil {
		return nil, errors.Trace(err)
	}
	if info.IsDir() {
		charm, err = ReadCharmDir(path)
	} else {
		charm, err = ReadCharmArchive(path)
	}
	if err != nil {
		return nil, errors.Trace(err)
	}

	return charm, errors.Trace(CheckMeta(charm))
}
// ReadCharm reads a Charm from path, which can point to either a charm archive or a
// charm directory.
ReadCharm reads a Charm from path, which can point to either a charm archive or a
charm directory.
// ReadCharm reads a Charm from path which can point to either a charm archive or a // charm directory .
func ReadCharm(path string) (charm Charm, err error) {
	info, err := os.Stat(path)
	if err != nil {
		return nil, errors.Trace(err)
	}
	if info.IsDir() {
		charm, err = ReadCharmDir(path)
	} else {
		charm, err = ReadCharmArchive(path)
	}
	if err != nil {
		return nil, errors.Trace(err)
	}
	return charm, errors.Trace(CheckMeta(charm))
}
func ReadCharm ( path string ) ( charm Charm , err error ) { info , err := os . Stat ( path ) if err != nil { return nil , errors . Trace ( err ) } if info . IsDir ( ) { charm , err = ReadCharmDir ( path ) } else { charm , err = ReadCharmArchive ( path ) } if err != nil { return nil , errors . Trace ( err ) } return charm , errors . Trace ( CheckMeta ( charm ) ) }
ReadCharm reads a Charm from path, which can point to either a charm archive or a
charm directory.
ReadCharm reads a Charm from path which can point to either a charm archive or a charm directory .