in ibazel/ibazel.go [453:501]
func (i *IBazel) queryForSourceFiles(query string) ([]string, error) {
b := i.newBazel()
localRepositories, err := i.realLocalRepositoryPaths()
if err != nil {
return nil, err
}
res, err := b.Query(i.queryArgs(query)...)
if err != nil {
log.Errorf("Bazel query failed: %v", err)
return nil, err
}
workspacePath, err := i.workspaceFinder.FindWorkspace()
if err != nil {
log.Errorf("Error finding workspace: %v", err)
return nil, err
}
toWatch := make([]string, 0, 10000)
for _, target := range res.Target {
switch *target.Type {
case blaze_query.Target_SOURCE_FILE:
label := *target.SourceFile.Name
if strings.HasPrefix(label, "@") {
repo, target := parseTarget(label)
if realPath, ok := localRepositories[repo]; ok {
label = strings.Replace(target, ":", string(filepath.Separator), 1)
toWatch = append(toWatch, filepath.Join(realPath, label))
break
}
continue
}
if strings.HasPrefix(label, "//external") {
continue
}
label = strings.Replace(strings.TrimPrefix(label, "//"), ":", string(filepath.Separator), 1)
toWatch = append(toWatch, filepath.Join(workspacePath, label))
break
default:
log.Errorf("%v\n", target)
}
}
return toWatch, nil
}