Skip to content

Instantly share code, notes, and snippets.

@liggitt
Last active October 13, 2019 08:51
Show Gist options
  • Save liggitt/cbb6eef44ca57c83cd2ef1a7b2ffd6ac to your computer and use it in GitHub Desktop.
Save liggitt/cbb6eef44ca57c83cd2ef1a7b2ffd6ac to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"os"
"github.com/spf13/pflag"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/cli-runtime/pkg/resource"
)
func main() {
// 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(false)
builderFlags.AddFlags(pflag.CommandLine)
// Parse flags
if err := pflag.CommandLine.Parse(os.Args); err != nil {
return
}
// Visit results
if err := builderFlags.ToBuilder(config, nil).Do().Visit(func(info *resource.Info, err error) error {
if err != nil {
fmt.Println(err, "\n===")
return nil
}
name, _ := meta.NewAccessor().Name(info.Object)
fmt.Printf("scope: %s\nresource: %v\nkind: %v\nname: %s\n===\n", info.Mapping.Scope.Name(), info.Mapping.Resource, info.Mapping.GroupVersionKind, name)
return nil
}); err != nil {
fmt.Println(err)
os.Exit(1)
}
}
@liggitt
Copy link
Author

liggitt commented Oct 11, 2019

go run resource_builder_example.go --kubeconfig=/path/to/kubeconfig --filename=/path/to/manifest.yaml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment