code/go/internal/loader/spec.go (23 lines of code) (raw):

// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one // or more contributor license agreements. Licensed under the Elastic License; // you may not use this file except in compliance with the Elastic License. package loader import ( "errors" "fmt" "io/fs" "os" "github.com/Masterminds/semver/v3" "github.com/elastic/package-spec/v3/code/go/internal/specschema" "github.com/elastic/package-spec/v3/code/go/internal/spectypes" "github.com/elastic/package-spec/v3/code/go/internal/yamlschema" ) // LoadSpec loads a package specification for the given version and type. func LoadSpec(fsys fs.FS, version semver.Version, pkgType string) (spectypes.ItemSpec, error) { fileSpecLoader := yamlschema.NewFileSchemaLoader() loader := specschema.NewFolderSpecLoader(fsys, fileSpecLoader, version) spec, err := loader.Load(pkgType) if errors.Is(err, os.ErrNotExist) { return nil, fmt.Errorf("package type %q not supported (%w)", pkgType, err) } if err != nil { return nil, err } return spec, nil }