@@ -26,11 +26,11 @@ import (
26
26
"github.com/operator-framework/deppy/pkg/deppy/solver"
27
27
rukpakv1alpha1 "github.com/operator-framework/rukpak/api/v1alpha1"
28
28
"k8s.io/apimachinery/pkg/runtime"
29
+ "k8s.io/apimachinery/pkg/runtime/serializer"
29
30
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
30
31
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
31
32
_ "k8s.io/client-go/plugin/pkg/client/auth"
32
- "sigs.k8s.io/controller-runtime/pkg/client"
33
- "sigs.k8s.io/controller-runtime/pkg/client/config"
33
+ "sigs.k8s.io/controller-runtime/pkg/client/fake"
34
34
35
35
catalogd "github.com/operator-framework/catalogd/api/core/v1alpha1"
36
36
operatorsv1alpha1 "github.com/operator-framework/operator-controller/api/v1alpha1"
@@ -49,10 +49,13 @@ const (
49
49
flagNamePackageVersion = "package-version"
50
50
flagNamePackageChannel = "package-channel"
51
51
flagNameIndexRef = "index-ref"
52
+ flagNameInputDir = "input-dir"
52
53
)
53
54
54
55
var (
55
56
scheme = runtime .NewScheme ()
57
+
58
+ codecs = serializer .NewCodecFactory (scheme )
56
59
)
57
60
58
61
func init () {
@@ -71,11 +74,13 @@ func main() {
71
74
var packageVersion string
72
75
var packageChannel string
73
76
var indexRef string
77
+ var inputDir string
74
78
flag .StringVar (& packageName , flagNamePackageName , "" , "Name of the package to resolve" )
75
79
flag .StringVar (& packageVersion , flagNamePackageVersion , "" , "Version of the package" )
76
80
flag .StringVar (& packageChannel , flagNamePackageChannel , "" , "Channel of the package" )
77
81
// TODO: Consider adding support of multiple refs
78
82
flag .StringVar (& indexRef , flagNameIndexRef , "" , "Index reference (FBC image or dir)" )
83
+ flag .StringVar (& inputDir , flagNameInputDir , "" , "Directory containing Kubernetes manifests (such as Operator) to be used as an input for resolution" )
79
84
flag .Parse ()
80
85
81
86
if err := validateFlags (packageName , indexRef ); err != nil {
@@ -84,7 +89,7 @@ func main() {
84
89
os .Exit (1 )
85
90
}
86
91
87
- err := run (ctx , packageName , packageVersion , packageChannel , indexRef )
92
+ err := run (ctx , packageName , packageVersion , packageChannel , indexRef , inputDir )
88
93
if err != nil {
89
94
fmt .Fprintln (os .Stderr , err )
90
95
os .Exit (1 )
@@ -103,18 +108,25 @@ func validateFlags(packageName, indexRef string) error {
103
108
return nil
104
109
}
105
110
106
- func run (ctx context.Context , packageName , packageVersion , packageChannel , catalogRef string ) error {
107
- client , err := client .New (config .GetConfigOrDie (), client.Options {Scheme : scheme })
108
- if err != nil {
109
- return fmt .Errorf ("failed to create client: %w" , err )
111
+ func run (ctx context.Context , packageName , packageVersion , packageChannel , catalogRef , inputDir string ) error {
112
+ clientBuilder := fake .NewClientBuilder ().WithScheme (scheme )
113
+
114
+ if inputDir != "" {
115
+ objects , err := readManifestFiles (inputDir )
116
+ if err != nil {
117
+ return err
118
+ }
119
+
120
+ clientBuilder .WithRuntimeObjects (objects ... )
110
121
}
111
122
123
+ cl := clientBuilder .Build ()
112
124
resolver := solver .NewDeppySolver (
113
125
newIndexRefEntitySourceEntitySource (catalogRef ),
114
126
olm.NestedVariableSource {
115
127
newPackageVariableSource (packageName , packageVersion , packageChannel ),
116
128
func (inputVariableSource input.VariableSource ) (input.VariableSource , error ) {
117
- return olm .NewOperatorVariableSource (client , inputVariableSource ), nil
129
+ return olm .NewOperatorVariableSource (cl , inputVariableSource ), nil
118
130
},
119
131
func (inputVariableSource input.VariableSource ) (input.VariableSource , error ) {
120
132
return bundles_and_dependencies .NewBundlesAndDepsVariableSource (inputVariableSource ), nil
0 commit comments