mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-05-10 09:30:48 +08:00
- Added automated migration scripts for handle syntax, standard types, and macros - Deprecated legacy `Standard_*` types and macros in favor of native C++ equivalents - Introduced modern `occ` namespace with template-based type checking helpers - Enhanced NCollection macros to support variadic arguments for complex template types- Added automated migration scripts for handle syntax, standard types, and macros - Deprecated legacy `Standard_*` types and macros in favor of native C++ equivalents - Introduced modern `occ` namespace with template-based type checking helpers - Enhanced NCollection macros to support variadic arguments for complex template types
105 lines
3.3 KiB
Python
105 lines
3.3 KiB
Python
#!/usr/bin/env python3
|
|
# Copyright (c) 2025 OPEN CASCADE SAS
|
|
#
|
|
# This file is part of Open CASCADE Technology software library.
|
|
#
|
|
# This library is free software; you can redistribute it and/or modify it under
|
|
# the terms of the GNU Lesser General Public License version 2.1 as published
|
|
# by the Free Software Foundation, with special exception defined in the file
|
|
# OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
|
# distribution for complete text of the license and disclaimer of any warranty.
|
|
#
|
|
# Alternatively, this file may be used under the terms of Open CASCADE
|
|
# commercial license or contractual agreement.
|
|
|
|
import os
|
|
import re
|
|
from bs4 import BeautifulSoup
|
|
from pathlib import Path
|
|
import glob
|
|
|
|
import os.path
|
|
|
|
def get_referenced_images(html_file):
|
|
# Get the directory containing the HTML file
|
|
html_dir = os.path.dirname(os.path.abspath(html_file))
|
|
|
|
with open(html_file, 'r', encoding='utf-8') as f:
|
|
soup = BeautifulSoup(f.read(), 'html.parser')
|
|
|
|
images = set()
|
|
|
|
# Extract direct image references
|
|
for img in soup.find_all('img'):
|
|
if src := img.get('src'):
|
|
# Convert relative path to absolute
|
|
abs_path = os.path.normpath(os.path.join(html_dir, src))
|
|
images.add(abs_path)
|
|
|
|
# Extract toggle references
|
|
for elem in soup.find_all(attrs={'onclick': True}):
|
|
onclick = elem['onclick']
|
|
paths = re.findall(r'diffimage_toggle\(this,"([^"]+)","([^"]+)"\)', onclick)
|
|
for src1, src2 in paths:
|
|
# Convert relative paths to absolute
|
|
abs_path1 = os.path.normpath(os.path.join(html_dir, src1))
|
|
abs_path2 = os.path.normpath(os.path.join(html_dir, src2))
|
|
images.add(abs_path1)
|
|
images.add(abs_path2)
|
|
|
|
return images
|
|
|
|
def cleanup_platform_images(results_dir, platform):
|
|
html_file = f"{results_dir}/current/{platform}/diff-*.html"
|
|
html_files = glob.glob(html_file)
|
|
|
|
if not html_files:
|
|
print(f"No diff HTML found for {platform}")
|
|
return
|
|
|
|
# Get referenced images from HTML
|
|
referenced = set()
|
|
for html in html_files:
|
|
images = get_referenced_images(html)
|
|
referenced.update(images)
|
|
|
|
# Convert relative paths to absolute
|
|
base_dir = Path(results_dir)
|
|
current_dir = base_dir / "current" / platform
|
|
master_dir = base_dir / "master" / platform
|
|
|
|
# Find all PNGs
|
|
png_files = set()
|
|
for directory in [current_dir, master_dir]:
|
|
for root, _, files in os.walk(directory):
|
|
for file in files:
|
|
if file.lower().endswith('.png'):
|
|
png_files.add(Path(root) / file)
|
|
|
|
# Remove unreferenced PNGs
|
|
for png in png_files:
|
|
if str(png) not in referenced:
|
|
try:
|
|
png.unlink()
|
|
except OSError as e:
|
|
print(f"Error removing {png}: {e}")
|
|
|
|
def main():
|
|
platforms = [
|
|
"windows-x64",
|
|
"windows-clang-x64",
|
|
"macos-x64",
|
|
"macos-gcc-x64",
|
|
"linux-clang-x64",
|
|
"linux-gcc-x64"
|
|
]
|
|
|
|
results_dir = Path("./").resolve()
|
|
|
|
for platform in platforms:
|
|
print(f"\nProcessing {platform}...")
|
|
cleanup_platform_images(results_dir, platform)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|