package virtual import ( "fmt" "sort" "strings" "git.unkin.net/unkin/artifactapi/pkg/models" ) func init() { RegisterMerger(models.PackagePyPI, &PyPIMerger{}) } type PyPIMerger struct{} func (m *PyPIMerger) MergeIndexes(members []MemberIndex, proxyBaseURL string) ([]byte, error) { links := map[string]string{} for _, member := range members { body := string(member.Body) for _, line := range strings.Split(body, "\n") { line = strings.TrimSpace(line) if !strings.HasPrefix(line, "\n\n") for _, name := range keys { sb.WriteString(fmt.Sprintf(" %s\n", links[name], name)) } sb.WriteString("\n") return []byte(sb.String()), nil } func extractHref(tag string) string { idx := strings.Index(tag, `href="`) if idx == -1 { return "" } rest := tag[idx+6:] end := strings.Index(rest, `"`) if end == -1 { return rest } return rest[:end] } func extractLinkText(tag string) string { start := strings.Index(tag, ">") if start == -1 { return "" } rest := tag[start+1:] end := strings.Index(rest, "") if end == -1 { return strings.TrimSpace(rest) } return strings.TrimSpace(rest[:end]) }