func()

in internal/processor/processor.go [92:129]


func (client *ProcessorClient) Metadata() (*LibMetadata, error) {
	metadataFile, err := client.fs.Open(alzLibraryMetadataFile)
	var pe *fs.PathError
	if errors.As(err, &pe) {
		return &LibMetadata{
			Name:         "",
			DisplayName:  "",
			Description:  "",
			Path:         "",
			Dependencies: make([]LibMetadataDependency, 0),
		}, nil
	}
	if err != nil {
		return nil, fmt.Errorf("ProcessorClient.Metadata: error opening metadata file: %w", err)
	}
	defer metadataFile.Close() // nolint: errcheck
	data, err := io.ReadAll(metadataFile)
	if err != nil {
		return nil, fmt.Errorf("ProcessorClient.Metadata: error reading metadata file: %w", err)
	}
	unmar := newUnmarshaler(data, ".json")
	metadata := new(LibMetadata)
	err = unmar.unmarshal(metadata)
	if err != nil {
		return nil, fmt.Errorf("ProcessorClient.Metadata: error unmarshaling metadata: %w", err)
	}
	for _, dep := range metadata.Dependencies {
		switch {
		case dep.Path != "" && dep.Ref != "" && dep.CustomUrl == "":
			continue
		case dep.Path == "" && dep.Ref == "" && dep.CustomUrl != "":
			continue
		default:
			return nil, fmt.Errorf("ProcessorClient.Metadata: invalid dependency, either path & ref should be set, or custom_url: %v", dep)
		}
	}
	return metadata, nil
}