@@ -26,11 +26,11 @@ import (
2626 "github.com/operator-framework/deppy/pkg/deppy/solver"
2727 rukpakv1alpha1 "github.com/operator-framework/rukpak/api/v1alpha1"
2828 "k8s.io/apimachinery/pkg/runtime"
29+ "k8s.io/apimachinery/pkg/runtime/serializer"
2930 utilruntime "k8s.io/apimachinery/pkg/util/runtime"
3031 clientgoscheme "k8s.io/client-go/kubernetes/scheme"
3132 _ "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"
3434
3535 catalogd "github.com/operator-framework/catalogd/api/core/v1alpha1"
3636
@@ -50,10 +50,13 @@ const (
5050 flagNamePackageVersion = "package-version"
5151 flagNamePackageChannel = "package-channel"
5252 flagNameIndexRef = "index-ref"
53+ flagNameInputDir = "input-dir"
5354)
5455
5556var (
5657 scheme = runtime .NewScheme ()
58+
59+ codecs = serializer .NewCodecFactory (scheme )
5760)
5861
5962func init () {
@@ -72,11 +75,13 @@ func main() {
7275 var packageVersion string
7376 var packageChannel string
7477 var indexRef string
78+ var inputDir string
7579 flag .StringVar (& packageName , flagNamePackageName , "" , "Name of the package to resolve" )
7680 flag .StringVar (& packageVersion , flagNamePackageVersion , "" , "Version of the package" )
7781 flag .StringVar (& packageChannel , flagNamePackageChannel , "" , "Channel of the package" )
7882 // TODO: Consider adding support of multiple refs
7983 flag .StringVar (& indexRef , flagNameIndexRef , "" , "Index reference (FBC image or dir)" )
84+ flag .StringVar (& inputDir , flagNameInputDir , "" , "Directory containing Kubernetes manifests (such as Operator) to be used as an input for resolution" )
8085 flag .Parse ()
8186
8287 if err := validateFlags (packageName , indexRef ); err != nil {
@@ -85,7 +90,7 @@ func main() {
8590 os .Exit (1 )
8691 }
8792
88- err := run (ctx , packageName , packageVersion , packageChannel , indexRef )
93+ err := run (ctx , packageName , packageVersion , packageChannel , indexRef , inputDir )
8994 if err != nil {
9095 fmt .Fprintln (os .Stderr , err )
9196 os .Exit (1 )
@@ -104,18 +109,25 @@ func validateFlags(packageName, indexRef string) error {
104109 return nil
105110}
106111
107- func run (ctx context.Context , packageName , packageVersion , packageChannel , catalogRef string ) error {
108- client , err := client .New (config .GetConfigOrDie (), client.Options {Scheme : scheme })
109- if err != nil {
110- return fmt .Errorf ("failed to create client: %w" , err )
112+ func run (ctx context.Context , packageName , packageVersion , packageChannel , catalogRef , inputDir string ) error {
113+ clientBuilder := fake .NewClientBuilder ().WithScheme (scheme )
114+
115+ if inputDir != "" {
116+ objects , err := readManifestFiles (inputDir )
117+ if err != nil {
118+ return err
119+ }
120+
121+ clientBuilder .WithRuntimeObjects (objects ... )
111122 }
112123
124+ cl := clientBuilder .Build ()
113125 resolver := solver .NewDeppySolver (
114126 newIndexRefEntitySourceEntitySource (catalogRef ),
115127 olm.NestedVariableSource {
116128 newPackageVariableSource (packageName , packageVersion , packageChannel ),
117129 func (inputVariableSource input.VariableSource ) (input.VariableSource , error ) {
118- return olm .NewOperatorVariableSource (client , inputVariableSource ), nil
130+ return olm .NewOperatorVariableSource (cl , inputVariableSource ), nil
119131 },
120132 func (inputVariableSource input.VariableSource ) (input.VariableSource , error ) {
121133 return bundlesanddependencies .NewBundlesAndDepsVariableSource (inputVariableSource ), nil
0 commit comments