公开处理 N-50 期:将归档全文替换正式目录的简化版。 检查 docs/tmp/ 中是否有第 N-50 期的全文版,若有则: 1. 中文:提取全文,去掉 Astro 专用 frontmatter,覆盖 docs/ 2. 英文:若 docs/en/tmp/ 有全文,覆盖 docs/en/ 3. astro-blog:用完整 frontmatter 的全文覆盖博客简化版 4. 清理 tmp 归档文件
(weekly_no)
| 650 | |
| 651 | |
| 652 | def disclose_full_issue(weekly_no): |
| 653 | """公开处理 N-50 期:将归档全文替换正式目录的简化版。 |
| 654 | |
| 655 | 检查 docs/tmp/ 中是否有第 N-50 期的全文版,若有则: |
| 656 | 1. 中文:提取全文,去掉 Astro 专用 frontmatter,覆盖 docs/ |
| 657 | 2. 英文:若 docs/en/tmp/ 有全文,覆盖 docs/en/ |
| 658 | 3. astro-blog:用完整 frontmatter 的全文覆盖博客简化版 |
| 659 | 4. 清理 tmp 归档文件 |
| 660 | """ |
| 661 | target_no = int(weekly_no) - 50 |
| 662 | if target_no < 1: |
| 663 | return |
| 664 | |
| 665 | issues = _scan_weekly_issues() |
| 666 | target_date = _find_issue_date(target_no, issues) |
| 667 | if not target_date: |
| 668 | return |
| 669 | |
| 670 | project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
| 671 | |
| 672 | # 1. 中文全文:docs/tmp/ → docs/ |
| 673 | tmp_zh = os.path.join(project_root, 'docs', 'tmp', f'{target_date}-weekly.md') |
| 674 | docs_zh = os.path.join(project_root, 'docs', f'{target_date}-weekly.md') |
| 675 | |
| 676 | if os.path.exists(tmp_zh) and os.path.exists(docs_zh): |
| 677 | full_content = open(tmp_zh, encoding='utf-8').read() |
| 678 | # GitHub 版只保留 title + pubDate |
| 679 | github_content = _strip_frontmatter_for_github(full_content) |
| 680 | with open(docs_zh, 'w', encoding='utf-8') as f: |
| 681 | f.write(github_content) |
| 682 | print(f" ✓ 中文全文已公开: docs/{target_date}-weekly.md") |
| 683 | |
| 684 | # 3. astro-blog:保留完整 frontmatter |
| 685 | blog_dir = os.path.expanduser('~/Documents/GitHub/astro-blog/src/pages/posts') |
| 686 | blog_file = os.path.join(blog_dir, f'{target_date}-weekly.md') |
| 687 | if os.path.exists(blog_dir): |
| 688 | with open(blog_file, 'w', encoding='utf-8') as f: |
| 689 | f.write(full_content) |
| 690 | print(f" ✓ astro-blog 已同步: {target_date}-weekly.md") |
| 691 | |
| 692 | # 清理 tmp 中文归档 |
| 693 | os.remove(tmp_zh) |
| 694 | print(f" ✓ 已清理: docs/tmp/{target_date}-weekly.md") |
| 695 | else: |
| 696 | if os.path.exists(docs_zh): |
| 697 | # 正式目录已是全文版(之前公开过),跳过 |
| 698 | pass |
| 699 | |
| 700 | # 2. 英文全文:docs/en/tmp/ → docs/en/ |
| 701 | tmp_en = os.path.join(project_root, 'docs', 'en', 'tmp', f'{target_date}-weekly.md') |
| 702 | docs_en = os.path.join(project_root, 'docs', 'en', f'{target_date}-weekly.md') |
| 703 | |
| 704 | if os.path.exists(tmp_en) and os.path.exists(docs_en): |
| 705 | shutil.copy2(tmp_en, docs_en) |
| 706 | print(f" ✓ 英文全文已公开: docs/en/{target_date}-weekly.md") |
| 707 | os.remove(tmp_en) |
| 708 | print(f" ✓ 已清理: docs/en/tmp/{target_date}-weekly.md") |
| 709 |
no test coverage detected