in tools/go-agent/instrument/plugins/instrument.go [205:243]
func (i *Instrument) WriteExtraFiles(basePath string) ([]string, error) {
// if no enhancements or already wrote extra files, then ignore
if (len(i.enhancements) == 0 && !i.forceEnhance) || i.extraFilesWrote {
return nil, nil
}
i.extraFilesWrote = true
packageName := filepath.Base(i.compileOpts.Package)
for _, e := range i.enhancements {
if e.PackageName() != "" {
packageName = e.PackageName()
break
}
}
context := rewrite.NewContext(i.compileOpts.Package, packageName)
var results = make([]string, 0)
var files []string
var err error
// copy basic support files(operators)
if files, err = i.copyOperatorsFS(context, basePath, packageName); err != nil {
return nil, err
}
results = append(results, files...)
// copy user defined files(interceptors)
if files, err = i.copyFrameworkFS(context, i.compileOpts.Package, basePath, packageName); err != nil {
return nil, err
}
results = append(results, files...)
// write delegator file
if files, err = i.writeDelegatorFile(context, basePath); err != nil {
return nil, err
}
results = append(results, files...)
return results, nil
}