@@ -2,13 +2,15 @@ package cmd
22
33import (
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
1416var (
@@ -21,39 +23,56 @@ var (
2123)
2224
2325type 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