func()

in tools/go-agent/instrument/agentcore/instrument.go [98:145]


func (i *Instrument) WriteExtraFiles(dir string) ([]string, error) {
	if !i.hasCopyPath {
		return nil, nil
	}
	sub := i.needsCopyDir
	results := make([]string, 0)
	if sub == "" {
		sub = "."
	}

	pkgUpdates := make(map[string]string)
	for _, p := range CopiedSubPackages {
		pkgUpdates[filepath.Join(EnhanceFromBasePackage, p)] = filepath.Join(EnhanceBasePackage, p)
	}
	pkgUpdates[filepath.Join(EnhanceFromBasePackage, ReporterFromBasePackage)] = filepath.Join(ProjectBasePackage, ReporterBasePackage)

	for k, v := range pkgUpdates {
		newKey := strings.ReplaceAll(k, `\`, `/`)
		newVal := strings.ReplaceAll(v, `\`, `/`)

		pkgUpdates[newKey] = newVal
	}

	copiedFiles, err := tools.CopyGoFiles(core.FS, sub, dir, i.buildDSTDebugInfo, func(file *dst.File) {
		tools.ChangePackageImportPath(file, pkgUpdates)
	})
	if err != nil {
		return nil, err
	}
	results = append(results, copiedFiles...)

	// write extra file to link the operator and TLS methods
	if sub == "." {
		file, err := i.writeLinkerFile(dir)
		if err != nil {
			return nil, err
		}
		results = append(results, file)

		file1, err := i.writeTracerInitLink(dir)
		if err != nil {
			return nil, err
		}
		results = append(results, file1)
	}

	return results, nil
}