@@ -23,38 +23,81 @@ package cmd
2323
2424import (
2525 "bytes"
26+ "context"
2627 "io/ioutil"
2728 "os"
29+ "time"
2830
2931 "github.com/contiamo/openapi-generator-go/pkg/generators/models"
32+ "github.com/rs/zerolog"
3033 "github.com/rs/zerolog/log"
3134 "github.com/spf13/cobra"
3235)
3336
3437// modelsCmd represents the models command
3538var modelsCmd = & cobra.Command {
3639 Use : "models" ,
37- Short : "generate a models" ,
38- Long : `generate a models .` ,
40+ Short : "Generate Go code for models" ,
41+ Long : `This generates Go files for each model resolved from the given API spec .` ,
3942 Run : func (cmd * cobra.Command , args []string ) {
40- file , _ := cmd .Flags ().GetString ("spec" )
41- outputDirectory , _ := cmd .Flags ().GetString ("output" )
42- packageName , _ := cmd .Flags ().GetString ("package-name" )
43- bs , err := ioutil .ReadFile (file )
43+ ctx , cancel := context .WithTimeout (context .Background (), time .Minute )
44+ defer cancel ()
45+
46+ // human-readable
47+ log := log .Output (zerolog.ConsoleWriter {
48+ Out : cmd .OutOrStderr (),
49+ })
50+
51+ spec , err := cmd .Flags ().GetString ("spec" )
52+ if err != nil {
53+ log .Fatal ().Err (err ).Msg ("wrong value for `spec`" )
54+ }
55+ output , err := cmd .Flags ().GetString ("output" )
56+ if err != nil {
57+ log .Fatal ().Err (err ).Msg ("wrong value for `output`" )
58+ }
59+ packageName , err := cmd .Flags ().GetString ("package-name" )
60+ if err != nil {
61+ log .Fatal ().Err (err ).Msg ("wrong value for `package-name`" )
62+ }
63+
64+ log = log .
65+ With ().
66+ Str ("spec" , spec ).
67+ Str ("output" , output ).
68+ Str ("package_name" , packageName ).
69+ Logger ()
70+
71+ log .Debug ().Msg ("Loading the spec file..." )
72+ bs , err := ioutil .ReadFile (spec )
4473 if err != nil {
45- log .Fatal ().Str ( "spec-file" , file ). Err (err ).Msg ("failed to read the spec file" )
74+ log .Fatal ().Err (err ).Msg ("failed to read the spec file" )
4675 }
47- err = os .MkdirAll (outputDirectory , 0755 )
76+ log .Debug ().Msg ("The spec file has been loaded." )
77+
78+ log .Debug ().Msg ("Initializing the output directory..." )
79+ err = os .MkdirAll (output , 0755 )
4880 if err != nil {
49- log .Fatal ().Str ( "output" , outputDirectory ). Err (err ).Msg ("failed to create output folder" )
81+ log .Fatal ().Err (err ).Msg ("failed to create output folder" )
5082 }
83+ log .Debug ().Msg ("Output directory has been initialized." )
84+
85+ log .Debug ().Msg ("Generating files..." )
5186 reader := bytes .NewReader (bs )
52- err = models .Generate (reader , outputDirectory , models.Options {
87+ g , err : = models .NewGenerator (reader , models.Options {
5388 PackageName : packageName ,
89+ Destination : output ,
90+ Logger : log ,
5491 })
92+ if err != nil {
93+ log .Fatal ().Err (err ).Msg ("failed to initialize the generator" )
94+ }
95+ err = g .Generate (ctx )
5596 if err != nil {
5697 log .Fatal ().Err (err ).Msg ("failed to generate models" )
5798 }
99+
100+ log .Debug ().Msg ("Files have been generated." )
58101 },
59102}
60103
0 commit comments