Skip to content

Commit 0c59375

Browse files
committed
Update example
1 parent 64a578d commit 0c59375

File tree

1 file changed

+39
-20
lines changed

1 file changed

+39
-20
lines changed

pkg/oc/cli/cmd/example.go

+39-20
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ package cmd
22

33
import (
44
"fmt"
5-
"io"
6-
"os"
75

86
"github.com/spf13/cobra"
97

108
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
119
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
10+
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
11+
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
12+
13+
"github.com/openshift/origin/pkg/oc/util/ocscheme"
1214
)
1315

1416
var (
@@ -21,39 +23,56 @@ var (
2123
)
2224

2325
type TYPEOptions struct {
24-
In io.Reader
25-
Out, ErrOut io.Writer
26+
PrintFlags *genericclioptions.PrintFlags
27+
28+
Printer printers.ResourcePrinter
29+
DryRun bool
30+
31+
genericclioptions.IOStreams
2632
}
2733

28-
// NewCmdTYPE implements a TYPE command
34+
// NewTYPEOptions returns a TYPEOptions with proper defaults.
2935
// This is an example type for templating.
30-
func NewCmdTYPE(fullName string, f kcmdutil.Factory, in io.Reader, out, errout io.Writer) *cobra.Command {
31-
options := &TYPEOptions{
32-
In: in,
33-
Out: out,
34-
ErrOut: errout,
36+
func NewTYPEOptions(streams genericclioptions.IOStreams) *TYPEOptions {
37+
return &TYPEOptions{
38+
PrintFlags: genericclioptions.NewPrintFlags("action performed").WithTypeSetter(ocscheme.PrintingInternalScheme),
39+
IOStreams: streams,
3540
}
41+
}
42+
43+
// NewCmdTYPE implements a TYPE command
44+
// This is an example type for templating.
45+
func NewCmdTYPE(fullName string, f kcmdutil.Factory, streams genericclioptions.IOStreams) *cobra.Command {
46+
o := NewTYPEOptions(streams)
3647
cmd := &cobra.Command{
3748
Use: "NAME [...]",
3849
Short: "A short description",
3950
Long: internalTYPELong,
4051
Example: fmt.Sprintf(internalTYPEExample, fullName),
4152
Run: func(cmd *cobra.Command, args []string) {
42-
kcmdutil.CheckErr(options.Complete(f, cmd, args))
43-
kcmdutil.CheckErr(options.Validate())
44-
if err := options.Run(); err != nil {
45-
// TODO: move me to kcmdutil
46-
if err == kcmdutil.ErrExit {
47-
os.Exit(1)
48-
}
49-
kcmdutil.CheckErr(err)
50-
}
53+
kcmdutil.CheckErr(o.Complete(f, cmd, args))
54+
kcmdutil.CheckErr(o.Validate())
55+
kcmdutil.CheckErr(o.Run())
5156
},
5257
}
58+
59+
o.PrintFlags.AddFlags(cmd)
60+
kcmdutil.AddDryRunFlag(cmd)
61+
5362
return cmd
5463
}
5564

56-
func (o *TYPEOptions) Complete(f kcmdutil.Factory, c *cobra.Command, args []string) error {
65+
func (o *TYPEOptions) Complete(f kcmdutil.Factory, cmd *cobra.Command, args []string) error {
66+
var err error
67+
o.DryRun = kcmdutil.GetDryRunFlag(cmd)
68+
if o.DryRun {
69+
o.PrintFlags.Complete("%s (dry run)")
70+
}
71+
o.Printer, err = o.PrintFlags.ToPrinter()
72+
if err != nil {
73+
return err
74+
}
75+
5776
return nil
5877
}
5978

0 commit comments

Comments
 (0)