Include configuration name and vendor in generated wiki footers.

This commit is contained in:
mihailkudravcev
2026-07-24 09:46:44 +03:00
parent 046a9a51e3
commit f9e8380348
6 changed files with 145 additions and 57 deletions
+41 -23
View File
@@ -10,7 +10,7 @@ from datetime import datetime, timezone
from pathlib import Path
from export1c_help.__version__ import __version__
from export1c_help.config_version import read_config_name, read_config_version
from export1c_help.config_version import ConfigIdentity, read_config_identity
from export1c_help.convert import default_link_rewrite, extract_h1, html_to_markdown
from export1c_help.discover import HelpPage, build_link_title_map, discover_help_pages
from export1c_help.lifecycle import (
@@ -51,12 +51,15 @@ def re_sub_md(md: str) -> str:
return t
def _page_footer(rec: PageRecord, *, config_version: str) -> str:
def _page_footer(rec: PageRecord, *, identity: ConfigIdentity) -> str:
display = identity.display_name or ""
vendor = identity.vendor or ""
lines = [
"",
"---",
"",
f"*Конфигурация выгрузки: **{config_version}*** ",
f"*Конфигурация: **{display}*** ",
f"*Версия: **{identity.version}** · разработчик: **{vendor}*** ",
f"*Страница создана в: **{rec.created_in}** · изменена в: **{rec.edited_in}*** ",
f"*Мета: `{rec.meta_key}` · файл: `{rec.source}`*",
"",
@@ -69,21 +72,21 @@ def build_home(
titles: dict[str, str],
*,
source_label: str,
config_version: str,
config_name: str | None,
identity: ConfigIdentity,
life: LifecycleResult,
) -> str:
by_type: dict[str, list[HelpPage]] = {}
for p in pages:
by_type.setdefault(p.type_dir, []).append(p)
name_line = f" (`{config_name}`)" if config_name else ""
lines = [
"# Справка конфигурации",
"",
"Автогенерация из встроенной справки 1С (`Ext/Help/ru.html`).",
"",
f"- **Версия конфигурации (эта выгрузка):** `{config_version}`{name_line}",
f"- **Конфигурация:** {identity.display_name or ''}",
f"- **Версия (эта выгрузка):** `{identity.version}`",
f"- **Разработчик:** {identity.vendor or ''}",
f"- Источник: `{source_label}`",
f"- Страниц: **{len(pages)}** "
f"(+{life.created_count} / ~{life.edited_count} / ={life.unchanged_count} / -{life.deleted_count})",
@@ -133,16 +136,15 @@ def build_sidebar(pages: list[HelpPage], titles: dict[str, str]) -> str:
def build_history(
*,
config_version: str,
config_name: str | None,
identity: ConfigIdentity,
life: LifecycleResult,
prev_exports: list[dict],
) -> str:
name = f" `{config_name}`" if config_name else ""
lines = [
"# История выгрузок справки",
"",
f"Текущая выгрузка: конфигурация **{config_version}**{name}.",
f"Текущая выгрузка: **{identity.display_name or ''}** "
f"версия **{identity.version}**, разработчик **{identity.vendor or ''}**.",
"",
"## Эта выгрузка",
"",
@@ -157,7 +159,7 @@ def build_history(
lines.append("### Удалено в этой версии")
lines.append("")
for rec in life.deleted:
if rec.deleted_in != config_version:
if rec.deleted_in != identity.version:
continue
lines.append(
f"- `{rec.meta_key}` — «{rec.title}» "
@@ -183,11 +185,14 @@ def build_history(
lines.append("_Нет сохранённой истории (первая выгрузка с учётом версий)._")
lines.append("")
else:
lines.append("| Версия конфигурации | Дата (UTC) | Страниц | + | ~ | - |")
lines.append("|---------------------|------------|---------|---|---|---|")
lines.append("| Конфигурация | Версия | Разработчик | Дата (UTC) | Страниц | + | ~ | - |")
lines.append("|--------------|--------|-------------|------------|---------|---|---|---|")
for row in prev_exports:
lines.append(
f"| {row.get('config_version', '?')} | {row.get('exported_at', '?')} | "
f"| {row.get('config_display') or row.get('config_name') or ''} | "
f"{row.get('config_version', '?')} | "
f"{row.get('config_vendor') or ''} | "
f"{row.get('exported_at', '?')} | "
f"{row.get('pages_written', '?')} | {row.get('created', '?')} | "
f"{row.get('edited', '?')} | {row.get('deleted', '?')} |"
)
@@ -212,8 +217,15 @@ def export_help(
out_dir = out_dir.resolve()
stats = ExportStats()
cfg_ver = (config_version or read_config_version(src_root)).strip() or "unknown"
cfg_name = read_config_name(src_root)
identity = read_config_identity(src_root)
if config_version:
identity = ConfigIdentity(
version=config_version.strip() or identity.version,
name=identity.name,
synonym=identity.synonym,
vendor=identity.vendor,
)
cfg_ver = identity.version
stats.config_version = cfg_ver
prev_manifest = load_prev_manifest(prev_manifest_path)
@@ -286,7 +298,7 @@ def export_help(
for rec in life.active:
body = body_by_meta[rec.meta_key]
md = body.rstrip() + _page_footer(rec, config_version=cfg_ver)
md = body.rstrip() + _page_footer(rec, identity=identity)
(out_dir / rec.filename).write_text(md, encoding="utf-8")
stats.pages_written += 1
@@ -312,6 +324,9 @@ def export_help(
0,
{
"config_version": prev_manifest.get("config_version"),
"config_name": prev_manifest.get("config_name"),
"config_display": prev_manifest.get("config_display"),
"config_vendor": prev_manifest.get("config_vendor"),
"exported_at": prev_manifest.get("exported_at"),
"pages_written": prev_manifest.get("pages_written"),
"created": prev_manifest.get("created_count"),
@@ -332,8 +347,7 @@ def export_help(
written_pages,
titles,
source_label=label,
config_version=cfg_ver,
config_name=cfg_name,
identity=identity,
life=life,
),
encoding="utf-8",
@@ -344,8 +358,7 @@ def export_help(
)
(out_dir / "History.md").write_text(
build_history(
config_version=cfg_ver,
config_name=cfg_name,
identity=identity,
life=life,
prev_exports=prev_exports,
),
@@ -356,6 +369,9 @@ def export_help(
exports = [
{
"config_version": cfg_ver,
"config_name": identity.name,
"config_display": identity.display_name,
"config_vendor": identity.vendor,
"exported_at": exported_at,
"pages_written": stats.pages_written,
"created": stats.created_count,
@@ -370,7 +386,9 @@ def export_help(
"tool": "export_1c_help",
"version": __version__,
"config_version": cfg_ver,
"config_name": cfg_name,
"config_name": identity.name,
"config_display": identity.display_name,
"config_vendor": identity.vendor,
"source": label,
"exported_at": exported_at,
"pages_total": stats.pages_total,