in infra/module-swapper/cmd/swap.go [148:193]
func localToRemote(f []byte, p string) ([]byte, error) {
if _, err := os.Stat(p); err != nil {
return nil, err
}
absPath, err := filepath.Abs(filepath.Dir(p))
if err != nil {
return nil, fmt.Errorf("failed to get absolute path: %v", err)
}
f, err = restoreModules(f, p)
if err != nil {
return nil, err
}
currentReferences, err := moduleSourceRefs(f, p)
if err != nil {
return nil, fmt.Errorf("failed to write find module sources: %v", err)
}
newReferences := map[string]string{}
for label, source := range currentReferences {
localModule := matchedModule(filepath.Clean(filepath.Join(absPath, source)))
if localModule == nil {
log.Printf("no matches for %s", source)
continue
}
newReferences[label] = localModule.ModuleFQN
}
if len(currentReferences) == 0 {
return f, nil
}
updated, err := writeModuleRefs(f, p, newReferences)
if err != nil {
return nil, fmt.Errorf("failed to write updated module sources: %v", err)
}
// print diff info
log.Printf("Modifications made to file %s", p)
diff := difflib.UnifiedDiff{
A: difflib.SplitLines(string(f)),
B: difflib.SplitLines(string(updated)),
FromFile: "Original",
ToFile: "Modified",
Context: 3,
}
diffInfo, _ := difflib.GetUnifiedDiffString(diff)
log.Println(diffInfo)
return updated, nil
}