equal
deleted
inserted
replaced
7 |
7 |
8 import ( |
8 import ( |
9 "fmt" |
9 "fmt" |
10 "io/ioutil" |
10 "io/ioutil" |
11 "os" |
11 "os" |
|
12 "os/exec" |
12 "path/filepath" |
13 "path/filepath" |
13 "strings" |
14 "strings" |
14 |
15 |
15 "github.com/pkg/errors" |
16 "github.com/pkg/errors" |
16 "github.com/spf13/cobra" |
17 "github.com/spf13/cobra" |
87 } |
88 } |
88 } |
89 } |
89 var mcrp mcPrinter |
90 var mcrp mcPrinter |
90 p, err := printer.NewPrinter(of, opt) |
91 p, err := printer.NewPrinter(of, opt) |
91 if err != nil { |
92 if err != nil { |
92 return mcrp, err |
93 return &mcrp, err |
93 } |
94 } |
94 mcrp.ResourcePrinter = p |
95 mcrp.ResourcePrinter = p |
95 return mcrp, nil |
96 return &mcrp, nil |
96 } |
97 } |
97 |
98 |
98 func readTemplate(name, templateDir string) ([]byte, error) { |
99 func readTemplate(name, templateDir string) ([]byte, error) { |
99 if strings.HasPrefix(name, "/") || strings.HasPrefix(name, "./") || strings.HasPrefix(name, "../") { |
100 if strings.HasPrefix(name, "/") || strings.HasPrefix(name, "./") || strings.HasPrefix(name, "../") { |
100 return ioutil.ReadFile(name) |
101 return ioutil.ReadFile(name) |
139 |
140 |
140 func errPrint(format string, a ...interface{}) (n int, err error) { |
141 func errPrint(format string, a ...interface{}) (n int, err error) { |
141 return fmt.Fprintf(os.Stderr, format+"\n", a...) |
142 return fmt.Fprintf(os.Stderr, format+"\n", a...) |
142 } |
143 } |
143 |
144 |
144 func (mcp mcPrinter) printObj(obj interface{}) error { |
145 func (mcp *mcPrinter) printObj(obj interface{}) error { |
145 return mcp.PrintObj(obj, nil, "") |
146 if mcp.command == "" { |
|
147 return mcp.PrintObj(obj, nil, "") |
|
148 } |
|
149 |
|
150 cmd := exec.Command(mcp.command) |
|
151 stdin, err := cmd.StdinPipe() |
|
152 if err != nil { |
|
153 return err |
|
154 } |
|
155 err = mcp.PrintObj(obj, stdin, "") |
|
156 stdin.Close() |
|
157 |
|
158 if err != nil { |
|
159 return err |
|
160 } |
|
161 |
|
162 out, err := cmd.CombinedOutput() |
|
163 if len(out) > 0 { |
|
164 errPrint("Command output: %s", string(out)) |
|
165 } |
|
166 if err != nil { |
|
167 return errors.Wrap(err, "external command failed") |
|
168 } |
|
169 |
|
170 return nil |
146 } |
171 } |
147 |
172 |
148 func (mcp mcPrinter) setCommand(cmd string) { |
173 func (mcp *mcPrinter) setCommand(cmd string) { |
149 mcp.command = cmd |
174 mcp.command = cmd |
150 } |
175 } |