feat: emit protocol-relative display urls
This commit is contained in:
@@ -477,6 +477,8 @@ func addChangelogLinks(text, repoURL, rootDir string) string {
|
||||
return text
|
||||
}
|
||||
|
||||
displayRepoURL := displayURL(repoURL)
|
||||
|
||||
// Normalize headings to plain format, stripping any existing inline links.
|
||||
text = unreleasedHeadingRe.ReplaceAllString(text, "## [Unreleased]\n")
|
||||
text = releaseHeadingRe.ReplaceAllStringFunc(text, func(match string) string {
|
||||
@@ -512,30 +514,41 @@ func addChangelogLinks(text, repoURL, rootDir string) string {
|
||||
linkDefs := make([]string, 0, len(releasedVersions)+1)
|
||||
if len(releasedVersions) > 0 {
|
||||
latest := releasedVersions[0]
|
||||
linkDefs = append(linkDefs, fmt.Sprintf("[Unreleased]: %s", compareURL(repoURL, "v"+latest, "main")))
|
||||
linkDefs = append(linkDefs, fmt.Sprintf("[Unreleased]: %s", compareURL(displayRepoURL, "v"+latest, "main")))
|
||||
} else {
|
||||
linkDefs = append(linkDefs, fmt.Sprintf("[Unreleased]: %s/src/branch/main", repoURL))
|
||||
linkDefs = append(linkDefs, fmt.Sprintf("[Unreleased]: %s/src/branch/main", displayRepoURL))
|
||||
}
|
||||
|
||||
firstCommitShort, hasFirstCommit := firstCommitShortHash(rootDir)
|
||||
for i, version := range releasedVersions {
|
||||
if i+1 < len(releasedVersions) {
|
||||
previousVersion := releasedVersions[i+1]
|
||||
linkDefs = append(linkDefs, fmt.Sprintf("[%s]: %s", version, compareURL(repoURL, "v"+previousVersion, "v"+version)))
|
||||
linkDefs = append(linkDefs, fmt.Sprintf("[%s]: %s", version, compareURL(displayRepoURL, "v"+previousVersion, "v"+version)))
|
||||
continue
|
||||
}
|
||||
|
||||
if hasFirstCommit {
|
||||
linkDefs = append(linkDefs, fmt.Sprintf("[%s]: %s", version, compareURL(repoURL, firstCommitShort, "v"+version)))
|
||||
linkDefs = append(linkDefs, fmt.Sprintf("[%s]: %s", version, compareURL(displayRepoURL, firstCommitShort, "v"+version)))
|
||||
continue
|
||||
}
|
||||
|
||||
linkDefs = append(linkDefs, fmt.Sprintf("[%s]: %s", version, compareURL(repoURL, "v"+version, "main")))
|
||||
linkDefs = append(linkDefs, fmt.Sprintf("[%s]: %s", version, compareURL(displayRepoURL, "v"+version, "main")))
|
||||
}
|
||||
|
||||
return strings.TrimRight(text, "\n") + "\n\n" + strings.Join(linkDefs, "\n") + "\n"
|
||||
}
|
||||
|
||||
func displayURL(url string) string {
|
||||
trimmed := strings.TrimSpace(url)
|
||||
if strings.HasPrefix(trimmed, "https://") {
|
||||
return "//" + strings.TrimPrefix(trimmed, "https://")
|
||||
}
|
||||
if strings.HasPrefix(trimmed, "http://") {
|
||||
return "//" + strings.TrimPrefix(trimmed, "http://")
|
||||
}
|
||||
return trimmed
|
||||
}
|
||||
|
||||
func firstCommitShortHash(rootDir string) (string, bool) {
|
||||
command := exec.Command("git", "-C", rootDir, "rev-list", "--max-parents=0", "--abbrev-commit", "HEAD")
|
||||
output, err := command.Output()
|
||||
|
||||
Reference in New Issue
Block a user