@@ -25,11 +25,11 @@ import (
2525 "github.com/operator-framework/deppy/pkg/deppy/solver"
2626 rukpakv1alpha1 "github.com/operator-framework/rukpak/api/v1alpha1"
2727 "k8s.io/apimachinery/pkg/runtime"
28+ "k8s.io/apimachinery/pkg/runtime/serializer"
2829 utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2930 clientgoscheme "k8s.io/client-go/kubernetes/scheme"
3031 _ "k8s.io/client-go/plugin/pkg/client/auth"
31- "sigs.k8s.io/controller-runtime/pkg/client"
32- "sigs.k8s.io/controller-runtime/pkg/client/config"
32+ "sigs.k8s.io/controller-runtime/pkg/client/fake"
3333
3434 catalogd "github.com/operator-framework/catalogd/api/core/v1alpha1"
3535
@@ -49,10 +49,13 @@ const (
4949 flagNamePackageVersion = "package-version"
5050 flagNamePackageChannel = "package-channel"
5151 flagNameIndexRef = "index-ref"
52+ flagNameInputDir = "input-dir"
5253)
5354
5455var (
5556 scheme = runtime .NewScheme ()
57+
58+ codecs = serializer .NewCodecFactory (scheme )
5659)
5760
5861func init () {
@@ -71,11 +74,13 @@ func main() {
7174 var packageVersion string
7275 var packageChannel string
7376 var indexRef string
77+ var inputDir string
7478 flag .StringVar (& packageName , flagNamePackageName , "" , "Name of the package to resolve" )
7579 flag .StringVar (& packageVersion , flagNamePackageVersion , "" , "Version of the package" )
7680 flag .StringVar (& packageChannel , flagNamePackageChannel , "" , "Channel of the package" )
7781 // TODO: Consider adding support of multiple refs
7882 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" )
7984 flag .Parse ()
8085
8186 if err := validateFlags (packageName , indexRef ); err != nil {
@@ -84,7 +89,7 @@ func main() {
8489 os .Exit (1 )
8590 }
8691
87- err := run (ctx , packageName , packageVersion , packageChannel , indexRef )
92+ err := run (ctx , packageName , packageVersion , packageChannel , indexRef , inputDir )
8893 if err != nil {
8994 fmt .Fprintln (os .Stderr , err )
9095 os .Exit (1 )
@@ -103,17 +108,24 @@ func validateFlags(packageName, indexRef string) error {
103108 return nil
104109}
105110
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 ... )
110121 }
111122
123+ cl := clientBuilder .Build ()
112124 resolver := solver .NewDeppySolver (
113125 newIndexRefEntitySourceEntitySource (catalogRef ),
114126 append (
115127 variablesources.NestedVariableSource {newPackageVariableSource (packageName , packageVersion , packageChannel )},
116- controllers .NewVariableSource (client )... ,
128+ controllers .NewVariableSource (cl )... ,
117129 ),
118130 )
119131
0 commit comments