fix: modify publish symbolic link
This commit is contained in:
parent
98d4db67ea
commit
8e5e121f29
|
@ -5,7 +5,7 @@ import shutil
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import re
|
import re
|
||||||
from typing import Set, Dict
|
from typing import Set, Dict, Union
|
||||||
import logging
|
import logging
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
@ -45,7 +45,7 @@ def load_env_vars() -> tuple[Path, Path]:
|
||||||
|
|
||||||
return Path(source_dir), Path(dest_dir)
|
return Path(source_dir), Path(dest_dir)
|
||||||
|
|
||||||
def get_publish_status(file_path: Path) -> bool | None:
|
def get_publish_status(file_path: Path) -> Union[bool, None]:
|
||||||
"""Check if a markdown file has publish: true/false in its frontmatter."""
|
"""Check if a markdown file has publish: true/false in its frontmatter."""
|
||||||
try:
|
try:
|
||||||
with open(file_path, 'r', encoding='utf-8') as f:
|
with open(file_path, 'r', encoding='utf-8') as f:
|
||||||
|
@ -64,13 +64,17 @@ def extract_image_references(content: str) -> Set[str]:
|
||||||
markdown_images = set(re.findall(r'!\[.*?\]\((.*?)\)', content))
|
markdown_images = set(re.findall(r'!\[.*?\]\((.*?)\)', content))
|
||||||
return obsidian_images.union(markdown_images)
|
return obsidian_images.union(markdown_images)
|
||||||
|
|
||||||
def find_image_in_source(image_ref: str, source_dir: Path) -> Path | None:
|
def find_image_in_source(image_ref: str, source_dir: Path) -> Union[Path, None]:
|
||||||
"""Find an image file in the source directory."""
|
"""Find an image file in the source directory."""
|
||||||
image_name = Path(image_ref).name
|
image_name = Path(image_ref).name
|
||||||
|
|
||||||
# Search for the image recursively
|
# Search for the image recursively, following symlinks
|
||||||
for path in source_dir.rglob(image_name):
|
for path in source_dir.rglob(image_name):
|
||||||
if path.is_file():
|
if path.is_symlink():
|
||||||
|
resolved_path = path.resolve()
|
||||||
|
if resolved_path.is_file():
|
||||||
|
return resolved_path
|
||||||
|
elif path.is_file():
|
||||||
return path
|
return path
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -127,7 +131,9 @@ def sync_files(source_dir: Path, dest_dir: Path, clean: bool = False):
|
||||||
|
|
||||||
# Process markdown files
|
# Process markdown files
|
||||||
for source_file in source_dir.rglob("*.md"):
|
for source_file in source_dir.rglob("*.md"):
|
||||||
publish_status = get_publish_status(source_file)
|
# Resolve symbolic links
|
||||||
|
actual_file = source_file.resolve() if source_file.is_symlink() else source_file
|
||||||
|
publish_status = get_publish_status(actual_file)
|
||||||
if publish_status is None:
|
if publish_status is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue