43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
"""Utility functions shared across backend modules."""
|
|
from typing import Dict, Any, Tuple
|
|
|
|
|
|
def should_include_path(rel_parts: Tuple[str, ...], vault_config: Dict[str, Any]) -> bool:
|
|
"""Check if a path should be included based on hidden files configuration.
|
|
|
|
Simplified logic:
|
|
- If includeHidden=True: include ALL hidden files/folders recursively
|
|
- If includeHidden=False: check whitelist
|
|
- If a whitelisted folder is in the path, include ALL sub-hidden files/folders
|
|
- Otherwise, exclude the path
|
|
|
|
Args:
|
|
rel_parts: Tuple of path parts relative to vault root
|
|
vault_config: Vault configuration dict with includeHidden and hiddenWhitelist
|
|
|
|
Returns:
|
|
True if the path should be included, False otherwise
|
|
"""
|
|
include_hidden = vault_config.get("includeHidden", False)
|
|
hidden_whitelist = vault_config.get("hiddenWhitelist", [])
|
|
|
|
# Check if any part of the path starts with a dot (hidden)
|
|
hidden_parts = [part for part in rel_parts if part.startswith(".")]
|
|
|
|
if not hidden_parts:
|
|
# No hidden parts, always include
|
|
return True
|
|
|
|
if include_hidden:
|
|
# Include all hidden files/folders recursively
|
|
return True
|
|
|
|
# Check if the FIRST hidden part is in the whitelist
|
|
# If yes, include all sub-hidden files/folders automatically
|
|
first_hidden = hidden_parts[0]
|
|
if first_hidden in hidden_whitelist:
|
|
return True
|
|
|
|
# First hidden part not in whitelist, exclude
|
|
return False
|