官网去掉指向私有仓库的链接,完整更新日志折叠在页面内
This commit is contained in:
1 parent
3117b69deb
commit
a67d12120b
7 files changed
+164
-58
No files matched your search
@@ -24,6 +24,10 @@ APP="build/DerivedData/Build/Products/Release/OpenStats.app"
|
||||
DMG_NAME="OpenStats-${VERSION}.dmg"
|
||||
ZIP_NAME="OpenStats-${VERSION}.zip"
|
||||
|
||||
# 在线升级的更新摘要取自该版本的更新日志:发版前把 “## 未发布” 改成 “## 版本 · 日期”
|
||||
grep -q "^## ${VERSION} · " CHANGELOG.md \
|
||||
|| { echo "error: CHANGELOG.md 里没有 “## ${VERSION} · 日期” 标题,先把 “## 未发布” 改成正式版本。" >&2; exit 1; }
|
||||
|
||||
if [ -z "$SIGN_ID" ]; then
|
||||
echo "error: 钥匙串里没有 Developer ID Application 证书,无法发布。" >&2
|
||||
exit 1
|
||||
|
||||
+39
-16
@@ -27,9 +27,8 @@ ROOT = pathlib.Path(__file__).resolve().parent.parent
|
||||
RECENT_DAYS = 3
|
||||
WEEKS = 26
|
||||
|
||||
KIND_EN = {"新增": "Added", "样式": "Style", "修复": "Fixed"}
|
||||
KIND_EN = {"新增": "Added", "样式": "Style", "调整": "Changed", "修复": "Fixed"}
|
||||
WEB_ITEMS_PER_DAY = 8
|
||||
CHANGELOG_URL = "https://github.com/gentpan/OpenStats/blob/main/CHANGELOG.md"
|
||||
|
||||
|
||||
# ── CHANGELOG.md ──────────────────────────────────────────────────────────
|
||||
@@ -170,24 +169,48 @@ def inline_html(text):
|
||||
return out
|
||||
|
||||
|
||||
def web_day(release, day, lines):
|
||||
items = [(g["kind"], item) for g in day["groups"] for item in g["items"]]
|
||||
lines.append(' <article class="log__day">')
|
||||
lines.append(f' <div class="log__head"><time datetime="{day["date"]}">{day["date"]}</time>'
|
||||
f'<span class="log__tag">{html.escape(release["version"])}</span></div>')
|
||||
lines.append(f' <p class="log__counts">{html.escape(counts(day, False))}</p>')
|
||||
|
||||
def item_lines(chunk, indent):
|
||||
return [f'{indent}<li><span class="log__kind">{html.escape(kind)}</span>{inline_html(item)}</li>'
|
||||
for kind, item in chunk]
|
||||
|
||||
lines.append(' <ul class="log__list">')
|
||||
lines += item_lines(items[:WEB_ITEMS_PER_DAY], " ")
|
||||
lines.append(" </ul>")
|
||||
rest = items[WEB_ITEMS_PER_DAY:]
|
||||
if rest:
|
||||
# 仓库是私有的,完整条目直接折叠在官网上,不链接到 GitHub
|
||||
lines.append(' <details class="log__rest">')
|
||||
lines.append(f' <summary>还有 {len(rest)} 项</summary>')
|
||||
lines.append(' <ul class="log__list">')
|
||||
lines += item_lines(rest, " ")
|
||||
lines.append(" </ul>")
|
||||
lines.append(" </details>")
|
||||
lines.append(" </article>")
|
||||
|
||||
|
||||
def web_block(releases, indent=" "):
|
||||
"""官网只展示已发布的版本:最近几天直接显示,更早的折叠。"""
|
||||
released = [r for r in releases if r["version"]]
|
||||
entries = day_entries(released)
|
||||
lines = ["<!-- changelog:start -->",
|
||||
"<!-- 由 Scripts/sync_changelog.py 从 CHANGELOG.md 生成,请勿手改。 -->",
|
||||
'<div class="log">']
|
||||
for release, day in day_entries(releases)[:RECENT_DAYS]:
|
||||
label = release["version"] or "未发布"
|
||||
items = [(g["kind"], item) for g in day["groups"] for item in g["items"]]
|
||||
lines.append(' <article class="log__day">')
|
||||
lines.append(f' <div class="log__head"><time datetime="{day["date"]}">{day["date"]}</time>'
|
||||
f'<span class="log__tag">{html.escape(label)}</span></div>')
|
||||
lines.append(f' <p class="log__counts">{html.escape(counts(day, False))}</p>')
|
||||
lines.append(' <ul class="log__list">')
|
||||
for kind, item in items[:WEB_ITEMS_PER_DAY]:
|
||||
lines.append(f' <li><span class="log__kind">{html.escape(kind)}</span>{inline_html(item)}</li>')
|
||||
lines.append(" </ul>")
|
||||
if len(items) > WEB_ITEMS_PER_DAY:
|
||||
lines.append(f' <a class="log__more" href="{CHANGELOG_URL}">还有 {len(items) - WEB_ITEMS_PER_DAY} 项 →</a>')
|
||||
lines.append(" </article>")
|
||||
for release, day in entries[:RECENT_DAYS]:
|
||||
web_day(release, day, lines)
|
||||
older = entries[RECENT_DAYS:]
|
||||
if older:
|
||||
lines.append(' <details class="log__older">')
|
||||
lines.append(f' <summary>更早的更新({len(older)} 天)</summary>')
|
||||
for release, day in older:
|
||||
web_day(release, day, lines)
|
||||
lines.append(" </details>")
|
||||
lines.append("</div>")
|
||||
lines.append("<!-- changelog:end -->")
|
||||
return "\n".join(lines[:1] + [indent + line for line in lines[1:]])
|
||||
|
||||
Reference in new issue
Block a user