-
Notifications
You must be signed in to change notification settings - Fork 23
/
example.go
68 lines (51 loc) · 1.45 KB
/
example.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package main
import (
"fmt"
"github.com/open-component-model/ocm/pkg/contexts/ocm"
"github.com/open-component-model/ocm/pkg/contexts/ocm/compdesc"
metav1 "github.com/open-component-model/ocm/pkg/contexts/ocm/compdesc/meta/v1"
"github.com/open-component-model/ocm/pkg/contexts/ocm/repositories/ocireg"
"github.com/open-component-model/ocm/pkg/utils"
)
const (
componentName = "ocm.software/toi/demo/helmdemo"
componentVersion = "0.3.0-rc.2"
)
const resourceName = "package"
func MyFirstOCMApplication() error {
octx := ocm.DefaultContext()
repoSpec := ocireg.NewRepositorySpec("ghcr.io/open-component-model/ocm")
repo, err := octx.RepositoryForSpec(repoSpec)
if err != nil {
return err
}
defer repo.Close()
compvers, err := repo.LookupComponentVersion(componentName, componentVersion)
if err != nil {
return err
}
defer compvers.Close()
cd := compvers.GetDescriptor()
data, err := compdesc.Encode(cd)
if err != nil {
return err
}
fmt.Printf("component descriptor:\n%s\n", string(data))
res, err := compvers.GetResource(metav1.NewIdentity(resourceName))
if err != nil {
return err
}
fmt.Printf("resource %s:\n type: %s\n", resourceName, res.Meta().Type)
meth, err := res.AccessMethod()
if err != nil {
return err
}
defer meth.Close()
fmt.Printf(" mime: %s\n", meth.MimeType())
data, err = meth.Get()
if err != nil {
return err
}
fmt.Printf(" content:\n%s\n", utils.IndentLines(string(data), " "))
return nil
}