pdf-4 / verify_setup.py
fokan's picture
Initial commit with static file serving and inline PDF viewing
623e14e
#!/usr/bin/env python3
"""
Verification script for the Enhanced DOCX to PDF Converter
"""
import os
import sys
from pathlib import Path
def verify_directory_structure():
"""Verify that all required directories and files exist"""
print("Verifying directory structure...")
required_dirs = [
"src",
"src/api",
"src/utils",
"tests",
"conversions"
]
required_files = [
"src/api/main.py",
"src/api/app.py",
"src/utils/config.py",
"src/utils/converter.py",
"src/utils/file_handler.py",
"tests/test_converter.py",
"Dockerfile",
"docker-compose.yml",
"requirements.txt",
"README.md"
]
# Check directories
for dir_path in required_dirs:
if not os.path.exists(dir_path):
print(f"❌ Missing directory: {dir_path}")
return False
print(f"✅ Found directory: {dir_path}")
# Check files
for file_path in required_files:
if not os.path.exists(file_path):
print(f"❌ Missing file: {file_path}")
return False
print(f"✅ Found file: {file_path}")
return True
def verify_python_compilation():
"""Verify that all Python files compile without syntax errors"""
print("\nVerifying Python compilation...")
python_files = [
"src/api/main.py",
"src/api/app.py",
"src/utils/config.py",
"src/utils/converter.py",
"src/utils/file_handler.py",
"tests/test_converter.py"
]
for file_path in python_files:
try:
with open(file_path, 'r', encoding='utf-8') as f:
compile(f.read(), file_path, 'exec')
print(f"✅ Compiles successfully: {file_path}")
except Exception as e:
print(f"❌ Compilation error in {file_path}: {e}")
return False
return True
def verify_docker_files():
"""Verify Docker configuration files"""
print("\nVerifying Docker configuration...")
# Check if Dockerfile exists and is readable
try:
with open("Dockerfile", "r") as f:
content = f.read()
if "FROM ubuntu:22.04" in content and "libreoffice" in content:
print("✅ Dockerfile appears to be correctly configured")
else:
print("⚠️ Dockerfile may be missing key components")
except Exception as e:
print(f"❌ Error reading Dockerfile: {e}")
return False
# Check if docker-compose.yml exists and is readable
try:
with open("docker-compose.yml", "r") as f:
content = f.read()
if "docx-to-pdf-enhanced" in content and "8000:8000" in content:
print("✅ docker-compose.yml appears to be correctly configured")
else:
print("⚠️ docker-compose.yml may be missing key components")
except Exception as e:
print(f"❌ Error reading docker-compose.yml: {e}")
return False
return True
def verify_requirements():
"""Verify requirements file"""
print("\nVerifying requirements...")
try:
with open("requirements.txt", "r") as f:
content = f.read()
required_packages = ["fastapi", "uvicorn", "python-multipart"]
for package in required_packages:
if package in content:
print(f"✅ Found required package: {package}")
else:
print(f"❌ Missing required package: {package}")
return False
print("✅ All required packages found in requirements.txt")
return True
except Exception as e:
print(f"❌ Error reading requirements.txt: {e}")
return False
def main():
"""Main verification function"""
print("Enhanced DOCX to PDF Converter - Setup Verification")
print("=" * 50)
# Run all verification checks
checks = [
verify_directory_structure,
verify_python_compilation,
verify_docker_files,
verify_requirements
]
all_passed = True
for check in checks:
if not check():
all_passed = False
print("\n" + "=" * 50)
if all_passed:
print("✅ All verification checks passed!")
print("\nYour Enhanced DOCX to PDF Converter is ready for use.")
print("To start the service, run:")
print(" docker-compose up --build")
print("\nThen access the API at http://localhost:8000")
print("API documentation is available at http://localhost:8000/docs")
else:
print("❌ Some verification checks failed.")
print("Please review the errors above and correct them before proceeding.")
return all_passed
if __name__ == "__main__":
success = main()
sys.exit(0 if success else 1)