func localToRemote()

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
}