Skip to content

Commit e317e09

Browse files
Added task for code generation
1 parent 0980d6c commit e317e09

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

cli/cli.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
223281
func (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

Comments
 (0)