Skip to content

Instantly share code, notes, and snippets.

@paralin
Created February 15, 2023 10:07
Show Gist options
  • Select an option

  • Save paralin/05668aef741b6a8a3ce943a0e3a1c61e to your computer and use it in GitHub Desktop.

Select an option

Save paralin/05668aef741b6a8a3ce943a0e3a1c61e to your computer and use it in GitHub Desktop.
ChatGPT = CI all the things???
// ChatGPT wrote this
package main
import (
"fmt"
"go/ast"
"go/parser"
"go/token"
"go/types"
"golang.org/x/tools/go/packages"
"os/exec"
)
func main() {
// Scan a project's Go code using the "packages" package
cfg := &packages.Config{Mode: packages.LoadAllSyntax}
pkgs, err := packages.Load(cfg, "./...")
if err != nil {
panic(err)
}
// Perform improvements, security fixes, and bug fixes to the source code files
for _, pkg := range pkgs {
for _, file := range pkg.Syntax {
ast.Inspect(file, func(n ast.Node) bool {
switch node := n.(type) {
// Make some code improvements, security fixes, and bug fixes here
// TODO: Call the ChatGPT API
}
return true
})
// Write the changes back to the source file
fset := token.NewFileSet()
err := parser.Fprint(pkg.Fset, file, pkg.TypesInfo.Types, fset, pkg.Syntax)
if err != nil {
panic(err)
}
// Commit the improvements as Git commits
gitAddCmd := exec.Command("git", "add", pkg.PkgPath)
gitAddErr := gitAddCmd.Run()
if gitAddErr != nil {
panic(gitAddErr)
}
gitCommitCmd := exec.Command("git", "commit", "-m", "Improvements and fixes to Go code")
gitCommitErr := gitCommitCmd.Run()
if gitCommitErr != nil {
panic(gitCommitErr)
}
}
}
fmt.Println("Improvements and fixes committed to Git")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment