Created
January 11, 2020 01:38
-
-
Save alexeldeib/3008d201ed71ac0234db80f923c0aae8 to your computer and use it in GitHub Desktop.
resource builder -> type runtime.Object
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"os" | |
"github.com/go-logr/logr" | |
"github.com/go-logr/zapr" | |
"github.com/sanity-io/litter" | |
"github.com/spf13/pflag" | |
"go.uber.org/zap" | |
corev1 "k8s.io/api/core/v1" | |
"k8s.io/cli-runtime/pkg/genericclioptions" | |
"k8s.io/cli-runtime/pkg/resource" | |
clientgoscheme "k8s.io/client-go/kubernetes/scheme" | |
) | |
func main() { | |
var log logr.Logger | |
// add flags for server connection (--kubeconfig, --server, etc) | |
config := genericclioptions.NewConfigFlags(true) | |
config.AddFlags(pflag.CommandLine) | |
// add flags for resource building (-f, --filename, etc) | |
builderFlags := genericclioptions.NewResourceBuilderFlags().WithFile(true).WithScheme(clientgoscheme.Scheme) | |
builderFlags.AddFlags(pflag.CommandLine) | |
zapLog, err := zap.NewDevelopment() | |
if err != nil { | |
fmt.Printf("failed to initialize logger: %v", err) | |
os.Exit(1) | |
} | |
log = zapr.NewLogger(zapLog) | |
// Parse flags | |
if err := pflag.CommandLine.Parse(os.Args); err != nil { | |
return | |
} | |
// Visit results | |
visitor := builderFlags.ToBuilder(config, nil).Do() | |
result, ok := visitor.(*resource.Result) | |
if !ok { | |
log.Error(err, "expected result to be of rypt *resource.Result, but was not.") | |
os.Exit(1) | |
} | |
objects, err := result.Object() | |
if err != nil { | |
log.Error(err, "failed to build runtime object from result") | |
os.Exit(1) | |
} | |
// litter.Dump(objects) | |
switch objects.(type) { | |
case *corev1.List: | |
list := objects.(*corev1.List) | |
for _, item := range list.Items { | |
litter.Dump(item) | |
} | |
default: | |
litter.Dump(objects) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment