in tools/go-agent/cmd/injector.go [187:216]
func (i *projectInjector) addingProjectImportInFileAndRewrite(f *dst.File) bool {
var latestImportDel *dst.GenDecl
var existingImport bool
for _, decl := range f.Decls {
if gen, ok := decl.(*dst.GenDecl); ok && gen != nil && gen.Tok == token.IMPORT {
latestImportDel = gen
if !existingImport && i.containsImport(gen) {
existingImport = true
}
}
}
if existingImport {
return true
}
if latestImportDel == nil {
latestImportDel = &dst.GenDecl{
Tok: token.IMPORT,
Specs: []dst.Spec{},
}
f.Decls = append([]dst.Decl{latestImportDel}, f.Decls...)
}
latestImportDel.Specs = append(latestImportDel.Specs, &dst.ImportSpec{
Name: dst.NewIdent("_"),
Path: &dst.BasicLit{
Kind: token.STRING,
Value: fmt.Sprintf("%q", projectBaseImportPath),
},
})
return false
}