1
0
Fork 0
squid-rewriter/distro/alpine.go

40 lines
803 B
Go

package distro
import (
"strings"
"sync"
"github.com/gocolly/colly"
)
type Alpine struct{}
func (d Alpine) GetName() string {
return "alpine"
}
func (d Alpine) GetRepos() []string {
return []string{DefaultRepo}
}
func (d Alpine) FetchMirrors(repos []string, repoMirrors chan<- RepoMirror, done *sync.WaitGroup) {
defer done.Done()
c := colly.NewCollector(
colly.AllowedDomains("mirrors.alpinelinux.org"),
)
c.OnHTML("div.mirrors table a", func(h *colly.HTMLElement) {
url := h.Attr("href")
if strings.HasPrefix(url, "http:") || strings.HasPrefix(url, "https:") || strings.HasPrefix(url, "ftp:") {
if !strings.HasSuffix(url, "/") {
url += "/"
}
repoMirrors <- RepoMirror{d.GetName(), DefaultRepo, url}
}
})
c.Visit("https://mirrors.alpinelinux.org/")
c.Wait()
}