1/*
2Copyright 2018 The Kubernetes Authors.
3
4Licensed under the Apache License, Version 2.0 (the "License");
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8    http://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS IS" BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15*/
16
17package printers
18
19import (
20	"io"
21
22	"k8s.io/apimachinery/pkg/runtime"
23	"k8s.io/apimachinery/pkg/runtime/schema"
24)
25
26// ResourcePrinterFunc is a function that can print objects
27type ResourcePrinterFunc func(runtime.Object, io.Writer) error
28
29// PrintObj implements ResourcePrinter
30func (fn ResourcePrinterFunc) PrintObj(obj runtime.Object, w io.Writer) error {
31	return fn(obj, w)
32}
33
34// ResourcePrinter is an interface that knows how to print runtime objects.
35type ResourcePrinter interface {
36	// Print receives a runtime object, formats it and prints it to a writer.
37	PrintObj(runtime.Object, io.Writer) error
38}
39
40// PrintOptions struct defines a struct for various print options
41type PrintOptions struct {
42	NoHeaders     bool
43	WithNamespace bool
44	WithKind      bool
45	Wide          bool
46	ShowLabels    bool
47	Kind          schema.GroupKind
48	ColumnLabels  []string
49
50	SortBy string
51
52	// indicates if it is OK to ignore missing keys for rendering an output template.
53	AllowMissingKeys bool
54}
55