@@ -51,6 +51,9 @@ func (c *Cli) parseArgs() {
5151 case "migrate" :
5252 c .parseMigrateArgs ()
5353 break
54+ case "refactor" :
55+ c .parseRefactorArgs ()
56+ break
5457 case "configure" :
5558 c .configure ()
5659 case "version" :
@@ -176,6 +179,47 @@ func (c *Cli) parseMigrateArgs() {
176179 }
177180}
178181
182+ func (c * Cli ) parseRefactorArgs () {
183+ if len (os .Args ) < 3 {
184+ fmt .Printf ("No command specified" )
185+ c .printRefactorHelp ()
186+ }
187+
188+ switch os .Args [2 ] {
189+ case "naming" :
190+ refactorNaming := flag .NewFlagSet ("refactorNaming" , flag .ExitOnError )
191+ lang := refactorNaming .String ("language" , "" , "Programming language: Java" )
192+
193+ err := refactorNaming .Parse (os .Args [3 :])
194+ if err != nil {
195+ c .logger .Errorf ("Could not parse args %v" , err )
196+ }
197+
198+ if len (refactorNaming .Args ()) == 0 {
199+ c .logger .Errorf ("Expected file input" )
200+ fmt .Printf ("Usage: codemaker refactor naming <file>" )
201+ os .Exit (1 )
202+ }
203+
204+ config , err := createConfig ()
205+ if err != nil {
206+ c .logger .Errorf ("No valid api key found %v" , err )
207+ os .Exit (1 )
208+ }
209+
210+ cl := c .createClient (* config )
211+ input := refactorNaming .Args ()[0 :]
212+
213+ if err := c .refactorNaming (cl , lang , input ); err != nil {
214+ c .logger .Errorf ("Could not rename variables %v" , err )
215+ }
216+ break
217+ default :
218+ fmt .Printf ("Unknown command %s\n " , os .Args [2 ])
219+ c .printRefactorHelp ()
220+ }
221+ }
222+
179223func (c * Cli ) generateDocumentation (cl client.Client , lang * string , files []string ) error {
180224 return c .walkPath (files , func (file string ) error {
181225 if lang == nil || len (* lang ) == 0 {
@@ -286,6 +330,38 @@ func (c *Cli) migrateSyntax(cl client.Client, lang *string, langVer *string, fil
286330 })
287331}
288332
333+ func (c * Cli ) refactorNaming (cl client.Client , lang * string , files []string ) error {
334+ return c .walkPath (files , func (file string ) error {
335+ if lang == nil || len (* lang ) == 0 {
336+ actLang , err := languageFromExtension (filepath .Ext (file ))
337+ if err != nil {
338+ c .logger .Errorf ("skipping unsupported file %s" , file )
339+ return nil
340+ }
341+ lang = & actLang
342+ }
343+
344+ c .logger .Infof ("Renaming local variables in file %s" , file )
345+ source , err := c .readFile (file )
346+ if err != nil {
347+ c .logger .Errorf ("failed to read file %s %v" , file , err )
348+ return nil
349+ }
350+
351+ output , err := c .process (cl , client .ModeRefactorNaming , * lang , "" , source )
352+ if err != nil {
353+ c .logger .Errorf ("failed to rename variables in file %s %v" , file , err )
354+ return nil
355+ }
356+
357+ if err := c .writeFile (file , * output ); err != nil {
358+ c .logger .Errorf ("failed to write file %s %v" , file , err )
359+ return nil
360+ }
361+ return nil
362+ })
363+ }
364+
289365func (c * Cli ) process (cl client.Client , mode string , lang string , langVer string , source string ) (* string , error ) {
290366 process , err := cl .CreateProcess (& client.CreateProcessRequest {
291367 Process : client.Process {
@@ -400,6 +476,7 @@ func (c *Cli) printHelp() {
400476 fmt .Printf ("Commands:\n " )
401477 fmt .Printf (" * generate\n " )
402478 fmt .Printf (" * migrate\n " )
479+ fmt .Printf (" * refactor\n " )
403480 fmt .Printf (" * configure\n " )
404481 fmt .Printf (" * version\n " )
405482 os .Exit (1 )
@@ -422,6 +499,14 @@ func (c *Cli) printMigrateHelp() {
422499 os .Exit (1 )
423500}
424501
502+ func (c * Cli ) printRefactorHelp () {
503+ fmt .Printf ("Usage: codemaker refactor <command>\n " )
504+ fmt .Printf ("\n " )
505+ fmt .Printf ("Commands:\n " )
506+ fmt .Printf (" * naming\n " )
507+ os .Exit (1 )
508+ }
509+
425510func (c * Cli ) walkPath (files []string , visitor func (file string ) error ) error {
426511 for _ , file := range files {
427512 if err := visitor (file ); err != nil {
0 commit comments