diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 143 |
1 files changed, 0 insertions, 143 deletions
@@ -1,22 +1,10 @@ package main import ( - "bufio" - "bytes" - "fmt" - "go/parser" - "go/printer" - "go/token" - "io/ioutil" "os" - "path" "path/filepath" - "strings" "github.com/codegangsta/cli" - "github.com/mgutz/ansi" - - "golang.org/x/tools/go/ast/astutil" ) func main() { @@ -69,134 +57,3 @@ func RunApp(dir string, from string, to string, c *cli.Context) { } } - -func ProcessFileNative(filePath string, from string, to string) { - - // Open file to read - fileContent, err := ioutil.ReadFile(filePath) - if err != nil { - fmt.Println(err) - } - - // Scan file line by line - scanner := bufio.NewScanner(bytes.NewReader(fileContent)) - - // Track line that is being scanned - scanLine := 0 - // Track number of changes in file - numChages := 0 - - // Control variables - isImportLine := false - - // Store final output text - output := "" - - // Scan through the lines of go file - for scanner.Scan() { - - scanLine++ - line := scanner.Text() - bareLine := strings.Replace(line, " ", "", -1) - - // If it is a single import statement, replace the path in that line - if strings.Contains(bareLine, "import\"") { - fmt.Println("Found Import On Line", scanLine) - newImport := strings.Replace(line, from, to, -1) - output += newImport + "\n" - numChages++ - continue - } - - // Change isImportLine accordingly if import statements are detected - if strings.Contains(bareLine, "import(") { - fmt.Println("Found Multiple Imports Starting On Line", scanLine) - isImportLine = true - } else if isImportLine && strings.Contains(bareLine, ")") { - fmt.Println("Imports Finish On Line", scanLine) - isImportLine = false - } - - // If it is a import line, replace the import - if isImportLine { - newImport := strings.Replace(line, from, to, -1) - fmt.Println("Replacing", line, "to", newImport, "on line", scanLine) - output += newImport + "\n" - numChages++ - continue - } - - // Just copy the rest of the lines to the output - output += line + "\n" - - } - - // Only write if changes were made - if numChages > 0 { - ioutil.WriteFile(filePath, []byte(output), os.ModePerm) - } -} - -func ProcessFileAST(filePath string, from string, to string) { - - //Colors to be used on the console - red := ansi.ColorCode("red+bh") - white := ansi.ColorCode("white+bh") - greenUnderline := ansi.ColorCode("green+buh") - blackOnWhite := ansi.ColorCode("black+b:white+h") - //Reset the color - reset := ansi.ColorCode("reset") - - // If the file is a go file scan it - if path.Ext(filePath) == ".go" { - // New FileSet to parse the go file to - fSet := token.NewFileSet() - - // Parse the file - file, err := parser.ParseFile(fSet, filePath, nil, 0) - if err != nil { - fmt.Println(err) - } - - // Get the list of imports from the ast - imports := astutil.Imports(fSet, file) - - // Keep track of number of changes - numChanges := 0 - - // Iterate through the imports array - for _, mPackage := range imports { - for _, mImport := range mPackage { - // Since astutil returns the path string with quotes, remove those - importString := mImport.Path.Value - - // If the path matches the oldpath, replace it with the new one - if strings.Contains(importString, from) { - //If it needs to be replaced, increase numChanges so we can write the file later - numChanges++ - - // Join the path of the import package with the remainder from the old one after removing the old import package - replacePackage := strings.Replace(importString, from, to, -1) - - fmt.Println(red + "Updating import " + importString + " from file " + reset + white + filePath + reset + red + " to " + reset + white + replacePackage + reset) - - // Remove the old import and replace it with the replacement - astutil.DeleteImport(fSet, file, importString) - astutil.AddImport(fSet, file, replacePackage) - } - } - } - - // If the number of changes are more than 0, write file - if numChanges > 0 { - // Print the new AST tree to a new output buffer - var outputBuffer bytes.Buffer - printer.Fprint(&outputBuffer, fSet, file) - - ioutil.WriteFile(filePath, outputBuffer.Bytes(), os.ModePerm) - fmt.Printf(blackOnWhite+"File "+filePath+" saved after %d changes."+reset+"\n", numChanges) - } else { - fmt.Println(greenUnderline + "No changes needed on file " + filePath + reset) - } - } -} |
