in gitindex/index.go [180:253]
func setTemplatesFromConfig(desc *zoekt.Repository, repoDir string) error {
repo, err := git.PlainOpen(repoDir)
if err != nil {
return err
}
cfg, err := repo.Config()
if err != nil {
return err
}
sec := cfg.Raw.Section("zoekt")
webURLStr := sec.Options.Get("web-url")
webURLType := sec.Options.Get("web-url-type")
if webURLType != "" && webURLStr != "" {
webURL, err := url.Parse(webURLStr)
if err != nil {
return err
}
if err := setTemplates(desc, webURL, webURLType); err != nil {
return err
}
}
name := sec.Options.Get("name")
if name != "" {
desc.Name = name
} else {
remoteURL := configLookupRemoteURL(cfg, "origin")
if remoteURL == "" {
return nil
}
u, err := url.Parse(remoteURL)
if err != nil {
return err
}
if err := SetTemplatesFromOrigin(desc, u); err != nil {
return err
}
}
if desc.RawConfig == nil {
desc.RawConfig = map[string]string{}
}
for _, o := range sec.Options {
desc.RawConfig[o.Key] = o.Value
}
// Ranking info.
// Github:
traction := 0
for _, s := range []string{"github-stars", "github-forks", "github-watchers", "github-subscribers"} {
f, err := strconv.Atoi(sec.Options.Get(s))
if err == nil {
traction += f
}
}
if strings.Contains(desc.Name, "googlesource.com/") && traction == 0 {
// Pretend everything on googlesource.com has 1000
// github stars.
traction = 1000
}
if traction > 0 {
l := math.Log(float64(traction))
desc.Rank = uint16((1.0 - 1.0/math.Pow(1+l, 0.6)) * 10000)
}
return nil
}