package main // parses /etc/gowebd/repomap // this file defines what repositories show up on go.wit.com import ( "bufio" "fmt" "net/http" "os" "path/filepath" "sort" "strings" "go.wit.com/log" ) // this makes the "go-source" / "go-import" page // this redirects the go path "go.wit.com/apps/go-clone" to the git path "gitea.wit.com/wit/go-clone" func repoHTML(w http.ResponseWriter, gourl string, realurl string) { realurl = "https://" + realurl log.Info("go repo =", gourl, "real url =", realurl) fmt.Fprintln(w, "") fmt.Fprintln(w, "") fmt.Fprintln(w, "
") // fmt.Fprintln(w, fmt.Fprintln(w, "") fmt.Fprintln(w, "") fmt.Fprintln(w, "") fmt.Fprintln(w, "") fmt.Fprintln(w, "") fmt.Fprintln(w, "Nothing to see here. Please move along.\"") fmt.Fprintln(w, "") fmt.Fprintln(w, "") } func findkey(url string) (string, string) { key := "go.wit.com" + url if repoMap[key] != "" { return key, repoMap[key] } return key, "" // parts := strings.Split(key, "/") } func readRepomap() { var pfile []byte var err error repoMap = make(map[string]string) pfile, err = os.ReadFile(REPOMAP) if err != nil { log.Error(err, "no repository map file found in /etc/gowebd/") log.Error(err, "falling back to the repository map file built into the gowebd binary") pfile, err = resources.ReadFile("resources/repomap") if err != nil { log.Error(err, "missing repomap in the binary") return } } configfile = strings.Split(string(pfile), "\n") for _, line := range configfile { fields := strings.Fields(line) if len(fields) < 2 { continue } repo := fields[0] realurl := fields[1] repoMap[repo] = realurl // log.Info("repo =", repo, "real url =", realurl) } for repo, _ := range repoMap { // log.Info("repo =", repo, "real url =", url) keysSorted = append(keysSorted, repo) } log.Info("sorted:") sort.Strings(keysSorted) // sort.Reverse(keys) sort.Sort(sort.Reverse(sort.StringSlice(keysSorted))) for _, gopath := range keysSorted { repo := forge.Repos.FindByGoPath(gopath) if repo != nil { version := repo.GetLastTag() age := forge.NewestAge(repo) log.Info("repo =", gopath, "real url =", repoMap[gopath], version, formatDuration(age)) versionMap[gopath] = version + " " + formatDuration(age) /* all := repo.Tags.SortByAge() for all.Scan() { r := all.Next() dur := time.Since(r.GetAuthordate().AsTime()) name := r.Refname log.Info("tag =", name, formatDuration(dur)) } */ } else { log.Info("repo =", gopath, "real url =", repoMap[gopath], "not found") } } } func readVersionFile() { file, err := os.Open(filepath.Join(os.Getenv("HOME"), "go.wit.com.versions")) if err != nil { return } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { tmp := scanner.Text() fields := strings.Fields(tmp) if len(fields) < 2 { continue } log.Println("readVersionFile() fields[0] =", fields[0]) // log.Println("readVersionFile() fields[1:] =", fields[1:]) versionMap[fields[0]] = strings.Join(fields[1:], " ") } }