diff --git a/.gitea/scripts/update-appimage-nix.sh b/.gitea/scripts/update-appimage-nix.sh
index affc347..72e3752 100644
--- a/.gitea/scripts/update-appimage-nix.sh
+++ b/.gitea/scripts/update-appimage-nix.sh
@@ -4,7 +4,6 @@ set -euo pipefail
: "${FILE:?FILE is required}"
: "${LATEST_RELEASE_URL:?LATEST_RELEASE_URL is required}"
: "${DOWNLOAD_URL_TEMPLATE:?DOWNLOAD_URL_TEMPLATE is required}"
-: "${RELEASE_API_REPO:?RELEASE_API_REPO is required}"
if command -v python >/dev/null 2>&1; then
PYTHON_BIN=python
@@ -60,184 +59,14 @@ s=re.sub(r'hash\s*=\s*"[^"]+"', f'hash = "{os.environ["NEW_HASH"]}"', s, count=1
open(p,"w").write(s)
PY
-echo "updated=true" >> "$GITHUB_OUTPUT"
-echo "version=$latest_version" >> "$GITHUB_OUTPUT"
-echo "previous_version=$current_version" >> "$GITHUB_OUTPUT"
-
release_tag="${release_tag_template//\{version\}/$latest_version}"
release_tag="${release_tag#\{}"
release_tag="${release_tag%\}}"
release_tag="${release_tag#\'}"
release_tag="${release_tag%\'}"
-
release_url="${LATEST_RELEASE_URL%/latest}/tag/${release_tag}"
-release_html=$(curl -fsSL "$release_url" || true)
-release_notes=""
-if [ -n "$release_html" ]; then
- release_notes=$(printf '%s' "$release_html" | "$PYTHON_BIN" -c '
-import re
-import sys
-from html.parser import HTMLParser
-
-html = sys.stdin.read()
-
-m = re.search(r"
]*data-test-selector=\"body-content\"[^>]*class=\"[^\"]*markdown-body[^\"]*\"[^>]*>(.*?)
", html, re.S)
-if not m:
- print("")
- raise SystemExit(0)
-
-fragment = m.group(1)
-
-class MdExtractor(HTMLParser):
- def __init__(self):
- super().__init__()
- self.out = []
- self.list_depth = 0
- self.in_pre = False
- self.in_code_inline = False
- self.link_stack = []
-
- def _append(self, text):
- self.out.append(text)
-
- def _ensure_newline(self):
- if not self.out:
- return
- if not self.out[-1].endswith("\n"):
- self.out.append("\n")
-
- def _ensure_blank_line(self):
- if not self.out:
- return
- joined = "".join(self.out)
- if joined.endswith("\n\n"):
- return
- if joined.endswith("\n"):
- self.out.append("\n")
- else:
- self.out.append("\n\n")
-
- def handle_starttag(self, tag, attrs):
- attrs_d = dict(attrs)
-
- if tag in ("h1", "h2", "h3", "h4", "h5", "h6"):
- self._ensure_blank_line()
- level = int(tag[1])
- self._append("#" * level + " ")
- return
-
- if tag in ("p", "div"):
- self._ensure_blank_line()
- return
-
- if tag in ("ul", "ol"):
- self._ensure_blank_line()
- self.list_depth += 1
- return
-
- if tag == "li":
- self._ensure_newline()
- indent = " " * max(self.list_depth - 1, 0)
- self._append(f"{indent}- ")
- return
-
- if tag == "br":
- self._append("\n")
- return
-
- if tag == "pre":
- self._ensure_blank_line()
- self._append("```\n")
- self.in_pre = True
- return
-
- if tag == "code":
- if not self.in_pre:
- self._append("`")
- self.in_code_inline = True
- return
-
- if tag == "a":
- href = attrs_d.get("href", "")
- self.link_stack.append(href)
- self._append("[")
- return
-
- if tag in ("strong", "b"):
- self._append("**")
- return
-
- if tag in ("em", "i"):
- self._append("*")
- return
-
- def handle_endtag(self, tag):
- if tag in ("h1", "h2", "h3", "h4", "h5", "h6", "p", "div"):
- self._ensure_blank_line()
- return
-
- if tag in ("ul", "ol"):
- self.list_depth = max(self.list_depth - 1, 0)
- self._ensure_blank_line()
- return
-
- if tag == "li":
- self._ensure_newline()
- return
-
- if tag == "pre":
- self._ensure_newline()
- self._append("```\n\n")
- self.in_pre = False
- return
-
- if tag == "code":
- if not self.in_pre and self.in_code_inline:
- self._append("`")
- self.in_code_inline = False
- return
-
- if tag == "a":
- href = self.link_stack.pop() if self.link_stack else ""
- if href:
- self._append("]("
- + href
- + ")")
- else:
- self._append("]")
- return
-
- if tag in ("strong", "b"):
- self._append("**")
- return
-
- if tag in ("em", "i"):
- self._append("*")
- return
-
- def handle_data(self, data):
- if data:
- self._append(data)
-
-parser = MdExtractor()
-parser.feed(fragment)
-text = "".join(parser.out)
-text = re.sub(r"\n{3,}", "\n\n", text)
-text = re.sub(r"[ \t]+\n", "\n", text)
-print(text.strip())
-' || true)
-else
- echo "warning: failed to fetch release page ${release_url}"
-fi
-
-if [ -z "$release_notes" ]; then
- release_notes="_No changelog found on upstream release page. Check ${release_url}._"
-fi
-
-delimiter="CHANGELOG_$(date +%s%N)"
-{
- echo "changelog<<${delimiter}"
- printf '%s\n' "$release_notes"
- echo "${delimiter}"
-} >> "$GITHUB_OUTPUT"
+echo "updated=true" >> "$GITHUB_OUTPUT"
+echo "version=$latest_version" >> "$GITHUB_OUTPUT"
+echo "previous_version=$current_version" >> "$GITHUB_OUTPUT"
+echo "release_url=$release_url" >> "$GITHUB_OUTPUT"
diff --git a/.gitea/workflows/handy-update.yml b/.gitea/workflows/handy-update.yml
index 13053f2..cad891a 100644
--- a/.gitea/workflows/handy-update.yml
+++ b/.gitea/workflows/handy-update.yml
@@ -25,9 +25,7 @@ jobs:
FILE: modules/pkgs/handy.nix
LATEST_RELEASE_URL: https://github.com/cjpais/Handy/releases/latest
DOWNLOAD_URL_TEMPLATE: https://github.com/cjpais/Handy/releases/download/v{version}/Handy_{version}_amd64.AppImage
- RELEASE_API_REPO: cjpais/Handy
RELEASE_TAG_TEMPLATE: v{version}
- GITHUB_TOKEN: ${{ secrets.github_token || secrets.GITHUB_TOKEN }}
shell: bash
run: bash .gitea/scripts/update-appimage-nix.sh
@@ -47,14 +45,13 @@ jobs:
if: steps.update.outputs.updated == 'true'
env:
GITEA_TOKEN: ${{ secrets.tea_token || secrets.TEA_TOKEN }}
- CHANGELOG: ${{ steps.update.outputs.changelog }}
shell: bash
run: |
set -euo pipefail
version="${{ steps.update.outputs.version }}"
previous_version="${{ steps.update.outputs.previous_version }}"
- release_url="https://github.com/cjpais/Handy/releases/tag/v${version}"
+ release_url="${{ steps.update.outputs.release_url }}"
pr_body=$(cat <