| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #ident "@(#)$Format:LocalFoodAI:app.py:%an:%ae:%ad:%cn:%ce:%cd:%H:%D:%N$"
- import os
- import glob
- from markdown_pdf import MarkdownPdf
- from markdown_pdf import Section
- def main():
- docs_dir = os.path.join(os.path.dirname(__file__), '..', 'docs')
- md_files = glob.glob(os.path.join(docs_dir, '*.md'))
-
- if not md_files:
- print("No markdown files found in docs/")
- return
-
- for md_file in md_files:
- pdf_file = md_file.replace('.md', '.pdf')
- print(f"Converting {os.path.basename(md_file)} to PDF...")
-
- with open(md_file, 'r', encoding='utf-8') as f:
- md_content = f.read()
-
- import subprocess
- try:
- log_info = subprocess.check_output(['git', 'log', '-1', '--format=%H %an %ae %ad %cn %ce %cd %N %s', '--date=format:%Y/%m/%d %H:%M:%S'], encoding='utf-8').strip()
- try:
- tag_info = subprocess.check_output(['git', 'describe', '--tags', '--always'], stderr=subprocess.DEVNULL, encoding='utf-8').strip()
- except Exception:
- tag_info = ""
-
- if tag_info:
- git_id = f"$Id$"
- else:
- git_id = f"$Id$"
- except Exception:
- git_id = "$Id$"
-
- md_content = md_content.replace('$Id$', git_id)
-
- try:
- pdf = MarkdownPdf(toc_level=2)
- base_name = os.path.basename(md_file)
-
- if base_name == 'project_report.md':
- print("Splitting project_report.md into Portrait/Landscape/Portrait sections...")
- parts = md_content.split('## 2. Project File Catalog & Documentation')
- if len(parts) == 2:
- portrait_part1 = parts[0]
- remaining = parts[1]
- parts2 = remaining.split('## 3. Directory Structure Map')
- if len(parts2) == 2:
- landscape_part = '## 2. Project File Catalog & Documentation' + parts2[0]
- portrait_part2 = '## 3. Directory Structure Map' + parts2[1]
-
- pdf.add_section(Section(portrait_part1, paper_size="A4"))
- pdf.add_section(Section(landscape_part, paper_size="A4-L"))
- pdf.add_section(Section(portrait_part2, paper_size="A4"))
- else:
- print("WARNING: Could not find Directory Structure Map heading. Defaulting to full portrait.")
- pdf.add_section(Section(md_content, paper_size="A4"))
- else:
- print("WARNING: Could not find Project File Catalog heading. Defaulting to full portrait.")
- pdf.add_section(Section(md_content, paper_size="A4"))
- else:
- pdf.add_section(Section(md_content, paper_size="A4"))
-
- pdf.save(pdf_file)
- print(f"Saved {os.path.basename(pdf_file)}")
-
- # Copy to workspace root if applicable
- import shutil
- root_dir = os.path.join(os.path.dirname(__file__), '..')
- if base_name == 'project_report.md':
- dest = os.path.join(root_dir, 'Project.pdf')
- try:
- if os.path.exists(dest):
- os.remove(dest)
- shutil.copy2(pdf_file, dest)
- print("Successfully updated root Project.pdf")
- except Exception as copy_err:
- print(f"WARNING: Could not copy to root Project.pdf: {copy_err}")
- elif base_name == 'retro_planning.md':
- dest = os.path.join(root_dir, 'Retro Planning.pdf')
- try:
- if os.path.exists(dest):
- os.remove(dest)
- shutil.copy2(pdf_file, dest)
- print("Successfully updated root Retro Planning.pdf")
- except Exception as copy_err:
- print(f"WARNING: Could not copy to root Retro Planning.pdf: {copy_err}")
-
- except Exception as e:
- print(f"WARNING: Could not save {os.path.basename(pdf_file)}. File might be locked or open in a viewer. Error: {e}")
- if __name__ == "__main__":
- main()
|