- Update Forgejo from 11.0.1 to 12.0.1, match upstream (see #80, cl 30121). - Re-vendor and refresh Gerrit integration patches from lix to restore compatibility (patches broke @ cl 30628). - Update dead emoji asset links to new locations, borrowed from lix infra (old URLs 404'd). - Fixes build failure for ops.nixos.public01System (#169). Context: - Forgejo build broke after nixpkgs channel bump (cl 30628) due to outdated patches (#169). - Emoji assets previously fetched from volpeon.ink are now archived or moved; new URLs and hashes are from lix infra. - Gerrit patches are yoinked from lix again to restore code review tab and Gerrit CL linking (thanks emilylange). Closes: #169 Refs: #80 Change-Id: I6a6a696423a6360b4056892e171df2baf6fa7206 Reviewed-on: https://cl.snix.dev/c/snix/+/30645 Tested-by: besadii Autosubmit: Oleksandr Knyshuk <olk@disr.it> Reviewed-by: Florian Klink <flokli@flokli.de>
110 lines
3.4 KiB
Diff
110 lines
3.4 KiB
Diff
From 33e71419f21f76e8a242b88dcb6eff7af2bc1b4d Mon Sep 17 00:00:00 2001
|
|
From: Jade Lovelace <software@lfcode.ca>
|
|
Date: Thu, 16 May 2024 19:56:25 -0700
|
|
Subject: [PATCH 2/2] lix: link gerrit cl/ and change-ids
|
|
|
|
This code is a bit dubious but you know, golang
|
|
---
|
|
modules/markup/html.go | 59 ++++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 59 insertions(+)
|
|
|
|
diff --git a/modules/markup/html.go b/modules/markup/html.go
|
|
index 7961c5c9301f03b89e88d289d032abca921adfff..518ad01b16466fe43f1fc44e9bcac63794d76bbe 100644
|
|
--- a/modules/markup/html.go
|
|
+++ b/modules/markup/html.go
|
|
@@ -51,6 +51,20 @@ var (
|
|
// so that abbreviated hash links can be used as well. This matches git and GitHub usability.
|
|
hashCurrentPattern = regexp.MustCompile(`(?:^|\s)[^\w\d]{0,2}([0-9a-f]{7,64})[^\w\d]{0,2}(?:\s|$)`)
|
|
|
|
+ // Gerrit change ID pattern
|
|
+ changeIdPattern = GerritPattern{
|
|
+ urlMatch: 1,
|
|
+ displayMatch: 1,
|
|
+ pattern: regexp.MustCompile(`(?:\s|^|\(|\[)(I[0-9a-f]{8,40})(?:\s|$|\)|\]|[.,](\s|$))`),
|
|
+ }
|
|
+
|
|
+ // Gerrit cl/ pattern
|
|
+ clSlashPattern = GerritPattern{
|
|
+ urlMatch: 2,
|
|
+ displayMatch: 1,
|
|
+ pattern: regexp.MustCompile(`(?:^|[\s\]\[(){},.;:!?])(cl/([0-9]{0,6}))(?:$|[\s\]\[(){},.;:!?])`),
|
|
+ }
|
|
+
|
|
// shortLinkPattern matches short but difficult to parse [[name|link|arg=test]] syntax
|
|
shortLinkPattern = regexp.MustCompile(`\[\[(.*?)\]\](\w*)`)
|
|
|
|
@@ -82,6 +96,14 @@ var (
|
|
InlineCodeBlockRegex = regexp.MustCompile("`[^`]+`")
|
|
)
|
|
|
|
+type GerritPattern struct {
|
|
+ // The match group to put in the URL
|
|
+ urlMatch int
|
|
+ // The match group to render as the link
|
|
+ displayMatch int
|
|
+ pattern *regexp.Regexp
|
|
+}
|
|
+
|
|
// CSS class for action keywords (e.g. "closes: #1")
|
|
const keywordClass = "issue-keyword"
|
|
|
|
@@ -158,6 +180,7 @@ var defaultProcessors = []processor{
|
|
commitCrossReferencePatternProcessor,
|
|
hashCurrentPatternProcessor,
|
|
fediAddressProcessor,
|
|
+ gerritCLPatternProcessor,
|
|
emailAddressProcessor,
|
|
emojiProcessor,
|
|
emojiShortCodeProcessor,
|
|
@@ -185,6 +208,7 @@ var commitMessageProcessors = []processor{
|
|
issueIndexPatternProcessor,
|
|
commitCrossReferencePatternProcessor,
|
|
hashCurrentPatternProcessor,
|
|
+ gerritCLPatternProcessor,
|
|
emailAddressProcessor,
|
|
emojiProcessor,
|
|
emojiShortCodeProcessor,
|
|
@@ -792,6 +816,41 @@ func shortLinkProcessor(ctx *RenderContext, node *html.Node) {
|
|
}
|
|
}
|
|
|
|
+func gerritCLPatternProcessor(ctx *RenderContext, node *html.Node) {
|
|
+ if ctx.Metas == nil || node == nil {
|
|
+ return
|
|
+ }
|
|
+
|
|
+ pats := []*GerritPattern{
|
|
+ &changeIdPattern,
|
|
+ &clSlashPattern,
|
|
+ }
|
|
+
|
|
+ next := node.NextSibling
|
|
+ for node != nil && node != next {
|
|
+ for _, pat := range pats {
|
|
+ m := pat.pattern.FindStringSubmatchIndex(node.Data)
|
|
+ if m == nil {
|
|
+ continue
|
|
+ }
|
|
+
|
|
+ linkPart := node.Data[m[pat.urlMatch*2]:m[pat.urlMatch*2+1]]
|
|
+ linkNamePart := node.Data[m[pat.displayMatch*2]:m[pat.displayMatch*2+1]]
|
|
+ link := util.URLJoin("https://cl.snix.dev/q", linkPart)
|
|
+ replaceContent(node, m[pat.displayMatch*2], m[pat.displayMatch*2+1], createCodeLink(link, linkNamePart, ""))
|
|
+ }
|
|
+
|
|
+ // FIXME: I don't understand how any of this stuff was supposed to work to
|
|
+ // begin with, since it seems like it returns if it doesn't just match in
|
|
+ // the first node???!
|
|
+ if node.NextSibling == nil {
|
|
+ return
|
|
+ }
|
|
+
|
|
+ node = node.NextSibling.NextSibling
|
|
+ }
|
|
+}
|
|
+
|
|
func fullIssuePatternProcessor(ctx *RenderContext, node *html.Node) {
|
|
if ctx.Metas == nil {
|
|
return
|
|
--
|
|
2.49.0
|