@@ -72,6 +72,35 @@ func (c *Cli) parseGenerateArgs() {
7272 }
7373
7474 switch os .Args [2 ] {
75+ case "code" :
76+ generateDocsCmd := flag .NewFlagSet ("generateCode" , flag .ExitOnError )
77+ lang := generateDocsCmd .String ("language" , "" , "Programming language: Java" )
78+
79+ err := generateDocsCmd .Parse (os .Args [3 :])
80+ if err != nil {
81+ c .logger .Errorf ("Could not parse args %v" , err )
82+ os .Exit (1 )
83+ }
84+
85+ if len (generateDocsCmd .Args ()) == 0 {
86+ c .logger .Errorf ("Expected file input" )
87+ fmt .Printf ("Usage: codemaker generate code <file>\n " )
88+ os .Exit (1 )
89+ }
90+
91+ config , err := createConfig ()
92+ if err != nil {
93+ c .logger .Errorf ("No valid api key found: %v" , err )
94+ os .Exit (1 )
95+ }
96+
97+ cl := c .createClient (* config )
98+ files := generateDocsCmd .Args ()[0 :]
99+
100+ if err := c .generateCode (cl , lang , files ); err != nil {
101+ c .logger .Errorf ("Could not generate the code %v" , err )
102+ }
103+ break
75104 case "docs" :
76105 generateDocsCmd := flag .NewFlagSet ("generateDocs" , flag .ExitOnError )
77106 lang := generateDocsCmd .String ("language" , "" , "Programming language: Java" )
@@ -220,6 +249,35 @@ func (c *Cli) parseRefactorArgs() {
220249 }
221250}
222251
252+ func (c * Cli ) generateCode (cl client.Client , lang * string , files []string ) error {
253+ return c .walkPath (files , func (file string ) error {
254+ if lang == nil || len (* lang ) == 0 {
255+ actLang , err := languageFromExtension (filepath .Ext (file ))
256+ if err != nil {
257+ return err
258+ }
259+ lang = & actLang
260+ }
261+
262+ c .logger .Infof ("Generating code in file %s" , file )
263+ source , err := c .readFile (file )
264+ if err != nil {
265+ return err
266+ }
267+
268+ output , err := c .process (cl , client .ModeCode , * lang , "" , source )
269+ if err != nil {
270+ return err
271+ }
272+
273+ if err := c .writeFile (file , * output ); err != nil {
274+ return err
275+ }
276+
277+ return nil
278+ })
279+ }
280+
223281func (c * Cli ) generateDocumentation (cl client.Client , lang * string , files []string ) error {
224282 return c .walkPath (files , func (file string ) error {
225283 if lang == nil || len (* lang ) == 0 {
@@ -486,6 +544,7 @@ func (c *Cli) printGenerateHelp() {
486544 fmt .Printf ("Usage: codemaker generate <command>\n " )
487545 fmt .Printf ("\n " )
488546 fmt .Printf ("Commands:\n " )
547+ fmt .Printf (" * code\n " )
489548 fmt .Printf (" * docs\n " )
490549 fmt .Printf (" * unit-tests\n " )
491550 os .Exit (1 )
0 commit comments