22package main
33
44import (
5+ "bytes"
6+ "errors"
57 "flag"
68 "fmt"
9+ "go/format"
710 "os"
811 "strings"
912 "text/template"
@@ -40,39 +43,32 @@ type vars struct {
4043 Interface interfaces.Interface
4144}
4245
43- func nonil (err ... error ) error {
44- for _ , e := range err {
45- if e != nil {
46- return e
47- }
46+ func main () {
47+ if err := run (); err != nil {
48+ fmt .Fprintln (os .Stderr , err )
49+ os .Exit (1 )
4850 }
49- return nil
5051}
5152
52- func die (v interface {}) {
53- fmt .Fprintln (os .Stderr , v )
54- os .Exit (1 )
55- }
56-
57- func main () {
53+ func run () error {
5854 flag .Parse ()
5955 if * query == "" {
60- die ("empty -for flag value; see -help for details" )
56+ return errors . New ("empty -for flag value; see -help for details" )
6157 }
6258 if * output == "" {
63- die ("empty -o flag value; see -help for details" )
59+ return errors . New ("empty -o flag value; see -help for details" )
6460 }
6561 q , err := interfaces .ParseQuery (* query )
6662 if err != nil {
67- die ( err )
63+ return err
6864 }
6965 opts := & interfaces.Options {
7066 Query : q ,
7167 Unexported : * all ,
7268 }
7369 i , err := interfaces .NewWithOptions (opts )
7470 if err != nil {
75- die ( err )
71+ return err
7672 }
7773 v := & vars {
7874 Type : fmt .Sprintf (`"%s"` , * query ),
@@ -85,15 +81,24 @@ func main() {
8581 } else {
8682 v .InterfaceName = * as
8783 }
84+ var buf bytes.Buffer
85+ if err := tmpl .Execute (& buf , v ); err != nil {
86+ return err
87+ }
88+ formatted , err := format .Source (buf .Bytes ())
89+ if err != nil {
90+ return err
91+ }
8892 f := os .Stdout
8993 if * output != "-" {
9094 f , err = os .OpenFile (* output , os .O_TRUNC | os .O_CREATE | os .O_WRONLY , 0644 )
9195 if err != nil {
92- die ( err )
96+ return err
9397 }
98+ defer f .Close ()
9499 }
95- err = nonil (tmpl .Execute (f , v ), f .Close ())
96- if err != nil {
97- die (err )
100+ if _ , err := f .Write (formatted ); err != nil {
101+ return err
98102 }
103+ return nil
99104}
0 commit comments