Skip to content

Commit e706c75

Browse files
Added task for refactoring naming
1 parent 203bbae commit e706c75

3 files changed

Lines changed: 88 additions & 5 deletions

File tree

cli/cli.go

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
179223
func (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+
289365
func (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+
425510
func (c *Cli) walkPath(files []string, visitor func(file string) error) error {
426511
for _, file := range files {
427512
if err := visitor(file); err != nil {

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ require (
1010

1111
require (
1212
go.uber.org/atomic v1.10.0 // indirect
13-
go.uber.org/multierr v1.9.0 // indirect
13+
go.uber.org/multierr v1.11.0 // indirect
1414
)

go.sum

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
2-
github.com/codemakerai/codemaker-sdk-go v0.0.3 h1:+nh2/UUiYuvmDA2hmt+wTp6nN/VS/ykemkYZ+ip9KGc=
3-
github.com/codemakerai/codemaker-sdk-go v0.0.3/go.mod h1:drvi/xHywQnOgWWGw3dOWZ4CV0NesAdNNuAtsVdZW2E=
42
github.com/codemakerai/codemaker-sdk-go v0.0.4 h1:OboQVjrsJUWuRaI9UMESlWxxPJZJw+U3+zf0idTOIPk=
53
github.com/codemakerai/codemaker-sdk-go v0.0.4/go.mod h1:drvi/xHywQnOgWWGw3dOWZ4CV0NesAdNNuAtsVdZW2E=
64
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -12,8 +10,8 @@ github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PK
1210
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
1311
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
1412
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
15-
go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI=
16-
go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ=
13+
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
14+
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
1715
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
1816
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
1917
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

0 commit comments

Comments
 (0)