soleprint init commit

This commit is contained in:
buenosairesam
2025-12-24 05:38:37 -03:00
commit 329c401ff5
96 changed files with 11564 additions and 0 deletions

View File

@@ -0,0 +1,93 @@
"""
Sync Gherkin feature files from album/book/gherkin-samples/ to tester/features/.
"""
import shutil
from pathlib import Path
from typing import Optional
def sync_features_from_album(
album_path: Optional[Path] = None,
tester_path: Optional[Path] = None
) -> dict:
"""
Sync .feature files from album/book/gherkin-samples/ to ward/tools/tester/features/.
Args:
album_path: Path to album/book/gherkin-samples/ (auto-detected if None)
tester_path: Path to ward/tools/tester/features/ (auto-detected if None)
Returns:
Dict with sync stats: {synced: int, skipped: int, errors: int}
"""
# Auto-detect paths if not provided
if tester_path is None:
tester_path = Path(__file__).parent.parent / "features"
if album_path is None:
# Attempt to find album in pawprint
pawprint_root = Path(__file__).parent.parent.parent.parent
album_path = pawprint_root / "album" / "book" / "gherkin-samples"
# Ensure paths exist
if not album_path.exists():
return {
"synced": 0,
"skipped": 0,
"errors": 1,
"message": f"Album path not found: {album_path}"
}
tester_path.mkdir(parents=True, exist_ok=True)
# Sync stats
synced = 0
skipped = 0
errors = 0
# Find all .feature files in album
for feature_file in album_path.rglob("*.feature"):
# Get relative path from album root
relative_path = feature_file.relative_to(album_path)
# Destination path
dest_file = tester_path / relative_path
try:
# Create parent directories
dest_file.parent.mkdir(parents=True, exist_ok=True)
# Copy file
shutil.copy2(feature_file, dest_file)
synced += 1
except Exception as e:
errors += 1
return {
"synced": synced,
"skipped": skipped,
"errors": errors,
"message": f"Synced {synced} feature files from {album_path}"
}
def clean_features_dir(features_dir: Optional[Path] = None):
"""
Clean the features directory (remove all .feature files).
Useful before re-syncing to ensure no stale files.
"""
if features_dir is None:
features_dir = Path(__file__).parent.parent / "features"
if not features_dir.exists():
return
# Remove all .feature files
for feature_file in features_dir.rglob("*.feature"):
try:
feature_file.unlink()
except Exception:
pass