Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -208,4 +208,10 @@ __marimo__/
scripts/output/
output/item_diff_report/
output/excel_diff_report/
output/item_diff_report_*/**/*.html
output/item_diff_report_*/assets/
output/item_diff_report_*/diff.json
output/excel_diff_report_*/*.html
output/excel_diff_report_*/*.json
output/excel_diff_report_*/assets/
output/wiki/
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ That command exports item databases, compares BKDiablo against BTDiablo and reta
- `output/skill_trees/`: generated class skill tree markdown
- `output/wiki/`: generated static wiki site, ignored as a local/publish artifact

Legacy direct-command defaults such as `output/item_diff_report/` and `output/excel_diff_report/` are ignored. Prefer `scripts/generate_reports.py` for repeatable project output.
Diff report directories contain structured JSON DTOs plus renderer outputs: Markdown for text review and browser-friendly HTML entry points at `index.html`. Legacy direct-command defaults such as `output/item_diff_report/` and `output/excel_diff_report/` are ignored. Prefer `scripts/generate_reports.py` for repeatable project output.

## Wiki

Expand Down
4 changes: 2 additions & 2 deletions docs/wiki-generation-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ This document defines the first-pass wiki generation strategy for the project.

### Patch And System Pages

- Excel diff outputs from `scripts/cli/compare_all_excel.py`
- Item diff outputs from `scripts/cli/compare_item_db.py`
- Excel diff DTOs and rendered outputs from `scripts/cli/compare_all_excel.py`
- Item diff DTOs and rendered outputs from `scripts/cli/compare_item_db.py`

## First Milestone

Expand Down
24 changes: 21 additions & 3 deletions scripts/cli/compare_all_excel.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import argparse
from d2lib.repository import D2Repository
from d2lib.services import ExcelComparisonService
from d2lib.exporters import MarkdownExporter
from d2lib.exporters import HtmlReportExporter, JsonExporter, MarkdownExporter

def get_key_column(filename: str) -> str:
mapping = {
Expand All @@ -15,10 +15,10 @@ def get_key_column(filename: str) -> str:
return mapping.get(filename, 'code')

def main() -> None:
parser = argparse.ArgumentParser(description="Compare two Diablo II Excel directories and export markdown diffs.")
parser = argparse.ArgumentParser(description="Compare two Diablo II Excel directories and export Markdown and HTML diffs.")
parser.add_argument("--new-dir", default="../mods/BKDiablo/bkdiablo.mpq/data/global/excel", help="Path to the new/target Excel directory")
parser.add_argument("--old-dir", default="../mods/BTDiablo/btdiablo.mpq/data/global/excel", help="Path to the old/base Excel directory")
parser.add_argument("--out", default="../output/excel_diff_report", help="Output directory for generated markdown diffs")
parser.add_argument("--out", default="../output/excel_diff_report", help="Output directory for generated diff reports")
args = parser.parse_args()

bk_dir = args.new_dir
Expand All @@ -27,6 +27,8 @@ def main() -> None:

repo = D2Repository(".")
exporter = MarkdownExporter()
html_exporter = HtmlReportExporter()
json_exporter = JsonExporter()
summary_rows = []

files_bk = {f for f in os.listdir(bk_dir) if f.endswith('.txt')}
Expand All @@ -40,7 +42,15 @@ def main() -> None:

diff = ExcelComparisonService.compare_tables(table_bk, table_bt, get_key_column(filename), filename)
report_name = filename.replace('.txt', '.md')
json_exporter.export(
{
"schema": "bt-bkdiff.excel-diff.v1",
"diff": diff,
},
os.path.join(report_dir, report_name.replace('.md', '.json')),
)
exporter.export_excel_diff(diff, os.path.join(report_dir, report_name))
html_exporter.export_excel_diff(diff, os.path.join(report_dir, report_name.replace('.md', '.html')))
summary_rows.append({
"filename": filename,
"report_name": report_name,
Expand Down Expand Up @@ -71,6 +81,14 @@ def main() -> None:
os.makedirs(report_dir, exist_ok=True)
with open(os.path.join(report_dir, "SUMMARY.md"), "w", encoding="utf-8") as f:
f.write("\n".join(summary_lines).strip() + "\n")
json_exporter.export(
{
"schema": "bt-bkdiff.excel-diff-summary.v1",
"files": summary_rows,
},
os.path.join(report_dir, "summary.json"),
)
html_exporter.export_excel_summary(summary_rows, os.path.join(report_dir, "index.html"))

print(f"Reports generated in {report_dir}")

Expand Down
20 changes: 16 additions & 4 deletions scripts/cli/compare_item_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from typing import Dict, List, Any
from d2lib.repository import D2Repository
from d2lib.services import ItemComparisonService
from d2lib.exporters import MarkdownExporter
from d2lib.exporters import HtmlReportExporter, JsonExporter, MarkdownExporter

def load_json_db(db_dir: str) -> Dict[str, Dict[str, Any]]:
# type -> id -> item
Expand Down Expand Up @@ -36,10 +36,10 @@ def load_json_db(db_dir: str) -> Dict[str, Dict[str, Any]]:
return types

def main() -> None:
parser = argparse.ArgumentParser(description="Compare two exported item databases and generate markdown reports.")
parser = argparse.ArgumentParser(description="Compare two exported item databases and generate Markdown and HTML reports.")
parser.add_argument("--new-db", default="../exports/item_db", help="Path to the new/target exported JSON item database")
parser.add_argument("--old-db", default="../exports/item_db_bt", help="Path to the old/base exported JSON item database")
parser.add_argument("--out", default="../output/item_diff_report", help="Output directory for generated markdown diffs")
parser.add_argument("--out", default="../output/item_diff_report", help="Output directory for generated diff reports")
args = parser.parse_args()

bk_json_dir = args.new_db
Expand Down Expand Up @@ -75,9 +75,21 @@ def main() -> None:
'removed': combined_removed,
'modified': combined_modified
}


json_exporter = JsonExporter()
json_exporter.export(
{
"schema": "bt-bkdiff.item-diff.v1",
"type_counts": type_counts,
"diff": combined_diff,
},
os.path.join(out_dir, "diff.json"),
)

exporter = MarkdownExporter()
exporter.export_item_diff(combined_diff, out_dir)
html_exporter = HtmlReportExporter()
html_exporter.export_item_diff(combined_diff, out_dir, type_counts=type_counts)

# Inject breakdown into SUMMARY.md
summary_path = os.path.join(out_dir, "SUMMARY.md")
Expand Down
Loading
Loading