diff options
Diffstat (limited to 'native.go')
| -rw-r--r-- | native.go | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/native.go b/native.go new file mode 100644 index 0000000..92e35fe --- /dev/null +++ b/native.go @@ -0,0 +1,77 @@ +package main + +import ( + "bufio" + "bytes" + "fmt" + "io/ioutil" + "os" + "strings" +) + +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) + } +} |
