Skip to content

Commit 4cfabfe

Browse files
committed
introduce benchmark for declcfg.LoadFS
Signed-off-by: Joe Lanford <[email protected]>
1 parent b11677f commit 4cfabfe

File tree

3 files changed

+431
-49
lines changed

3 files changed

+431
-49
lines changed

alpha/action/migrate.go

Lines changed: 6 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package action
22

33
import (
4-
"bytes"
54
"context"
65
"fmt"
7-
"io"
86
"io/ioutil"
97
"os"
10-
"path/filepath"
118

129
"github.com/operator-framework/operator-registry/alpha/declcfg"
1310
"github.com/operator-framework/operator-registry/pkg/image"
@@ -16,14 +13,13 @@ import (
1613
type Migrate struct {
1714
CatalogRef string
1815
OutputDir string
16+
FS declcfg.WriterFS
1917

20-
WriteFunc WriteFunc
18+
WriteFunc declcfg.WriteFunc
2119
FileExt string
2220
Registry image.Registry
2321
}
2422

25-
type WriteFunc func(config declcfg.DeclarativeConfig, w io.Writer) error
26-
2723
func (m Migrate) Run(ctx context.Context) error {
2824
entries, err := ioutil.ReadDir(m.OutputDir)
2925
if err != nil && !os.IsNotExist(err) {
@@ -52,48 +48,10 @@ func (m Migrate) Run(ctx context.Context) error {
5248
return fmt.Errorf("render catalog image: %w", err)
5349
}
5450

55-
return writeToFS(*cfg, m.OutputDir, m.WriteFunc, m.FileExt)
56-
}
57-
58-
func writeToFS(cfg declcfg.DeclarativeConfig, rootDir string, writeFunc WriteFunc, fileExt string) error {
59-
channelsByPackage := map[string][]declcfg.Channel{}
60-
for _, c := range cfg.Channels {
61-
channelsByPackage[c.Package] = append(channelsByPackage[c.Package], c)
62-
}
63-
bundlesByPackage := map[string][]declcfg.Bundle{}
64-
for _, b := range cfg.Bundles {
65-
bundlesByPackage[b.Package] = append(bundlesByPackage[b.Package], b)
66-
}
67-
68-
if err := os.MkdirAll(rootDir, 0777); err != nil {
69-
return err
70-
}
71-
72-
for _, p := range cfg.Packages {
73-
fcfg := declcfg.DeclarativeConfig{
74-
Packages: []declcfg.Package{p},
75-
Channels: channelsByPackage[p.Name],
76-
Bundles: bundlesByPackage[p.Name],
77-
}
78-
pkgDir := filepath.Join(rootDir, p.Name)
79-
if err := os.MkdirAll(pkgDir, 0777); err != nil {
80-
return err
81-
}
82-
filename := filepath.Join(pkgDir, fmt.Sprintf("catalog%s", fileExt))
83-
if err := writeFile(fcfg, filename, writeFunc); err != nil {
84-
return err
85-
}
51+
fsys := m.FS
52+
if fsys == nil {
53+
fsys = declcfg.OS{}
8654
}
87-
return nil
88-
}
8955

90-
func writeFile(cfg declcfg.DeclarativeConfig, filename string, writeFunc WriteFunc) error {
91-
buf := &bytes.Buffer{}
92-
if err := writeFunc(cfg, buf); err != nil {
93-
return fmt.Errorf("write to buffer for %q: %v", filename, err)
94-
}
95-
if err := ioutil.WriteFile(filename, buf.Bytes(), 0666); err != nil {
96-
return fmt.Errorf("write file %q: %v", filename, err)
97-
}
98-
return nil
56+
return declcfg.WriteFS(*cfg, fsys, m.OutputDir, m.WriteFunc, m.FileExt)
9957
}

0 commit comments

Comments
 (0)