@@ -2,13 +2,15 @@ package cmd
2
2
3
3
import (
4
4
"fmt"
5
- "io"
6
- "os"
7
5
8
6
"github.com/spf13/cobra"
9
7
10
8
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
11
9
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"
12
14
)
13
15
14
16
var (
@@ -21,39 +23,56 @@ var (
21
23
)
22
24
23
25
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
26
32
}
27
33
28
- // NewCmdTYPE implements a TYPE command
34
+ // NewTYPEOptions returns a TYPEOptions with proper defaults.
29
35
// 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 ,
35
40
}
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 )
36
47
cmd := & cobra.Command {
37
48
Use : "NAME [...]" ,
38
49
Short : "A short description" ,
39
50
Long : internalTYPELong ,
40
51
Example : fmt .Sprintf (internalTYPEExample , fullName ),
41
52
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 ())
51
56
},
52
57
}
58
+
59
+ o .PrintFlags .AddFlags (cmd )
60
+ kcmdutil .AddDryRunFlag (cmd )
61
+
53
62
return cmd
54
63
}
55
64
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
+
57
76
return nil
58
77
}
59
78
0 commit comments