1
1
package action
2
2
3
3
import (
4
- "bytes"
5
4
"context"
6
5
"fmt"
7
- "io"
8
6
"io/ioutil"
9
7
"os"
10
- "path/filepath"
11
8
12
9
"github.com/operator-framework/operator-registry/alpha/declcfg"
13
10
"github.com/operator-framework/operator-registry/pkg/image"
@@ -16,14 +13,13 @@ import (
16
13
type Migrate struct {
17
14
CatalogRef string
18
15
OutputDir string
16
+ FS declcfg.WriterFS
19
17
20
- WriteFunc WriteFunc
18
+ WriteFunc declcfg. WriteFunc
21
19
FileExt string
22
20
Registry image.Registry
23
21
}
24
22
25
- type WriteFunc func (config declcfg.DeclarativeConfig , w io.Writer ) error
26
-
27
23
func (m Migrate ) Run (ctx context.Context ) error {
28
24
entries , err := ioutil .ReadDir (m .OutputDir )
29
25
if err != nil && ! os .IsNotExist (err ) {
@@ -52,48 +48,10 @@ func (m Migrate) Run(ctx context.Context) error {
52
48
return fmt .Errorf ("render catalog image: %w" , err )
53
49
}
54
50
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 {}
86
54
}
87
- return nil
88
- }
89
55
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 )
99
57
}
0 commit comments