| 58 | |
| 59 | |
| 60 | def print_car_docs_diff(path): |
| 61 | base_car_docs = defaultdict(list) |
| 62 | new_car_docs = defaultdict(list) |
| 63 | |
| 64 | for car in load_base_car_docs(path): |
| 65 | base_car_docs[car.car_fingerprint].append(car) |
| 66 | for car in get_all_car_docs(): |
| 67 | new_car_docs[car.car_fingerprint].append(car) |
| 68 | |
| 69 | # Add new platforms to base cars so we can detect additions and removals in one pass |
| 70 | base_car_docs.update({car: [] for car in new_car_docs if car not in base_car_docs}) |
| 71 | |
| 72 | changes = defaultdict(list) |
| 73 | for base_car_model, base_cars in base_car_docs.items(): |
| 74 | # Match car info changes, and get additions and removals |
| 75 | new_cars = new_car_docs[base_car_model] |
| 76 | car_changes, car_additions, car_removals = match_cars(base_cars, new_cars) |
| 77 | |
| 78 | # Removals |
| 79 | for car_docs in car_removals: |
| 80 | changes["removals"].append(format_row([car_docs.get_column(column, STAR_ICON, VIDEO_ICON, FOOTNOTE_TAG) for column in Column])) |
| 81 | |
| 82 | # Additions |
| 83 | for car_docs in car_additions: |
| 84 | changes["additions"].append(format_row([car_docs.get_column(column, STAR_ICON, VIDEO_ICON, FOOTNOTE_TAG) for column in Column])) |
| 85 | |
| 86 | for new_car, base_car in car_changes: |
| 87 | # Column changes |
| 88 | row_diff = build_column_diff(base_car, new_car) |
| 89 | if ARROW_SYMBOL in row_diff: |
| 90 | changes["column"].append(row_diff) |
| 91 | |
| 92 | # Detail sentence changes |
| 93 | if base_car.detail_sentence != new_car.detail_sentence: |
| 94 | changes["detail"].append(f"- Sentence for {base_car.name} changed!\n" + |
| 95 | " ```diff\n" + |
| 96 | f" - {base_car.detail_sentence}\n" + |
| 97 | f" + {new_car.detail_sentence}\n" + |
| 98 | " ```") |
| 99 | |
| 100 | # Print diff |
| 101 | if any(len(c) for c in changes.values()): |
| 102 | markdown_builder = ["### ⚠️ This PR makes changes to [CARS.md](../blob/master/docs/CARS.md) ⚠️"] |
| 103 | |
| 104 | for title, category in (("## 🔀 Column Changes", "column"), ("## ❌ Removed", "removals"), |
| 105 | ("## ➕ Added", "additions"), ("## 📖 Detail Sentence Changes", "detail")): |
| 106 | if len(changes[category]): |
| 107 | markdown_builder.append(title) |
| 108 | if category not in ("detail",): |
| 109 | markdown_builder.append(COLUMNS) |
| 110 | markdown_builder.append(COLUMN_HEADER) |
| 111 | markdown_builder.extend(changes[category]) |
| 112 | |
| 113 | print("\n".join(markdown_builder)) |
| 114 | |
| 115 | |
| 116 | if __name__ == "__main__": |