993337be9f
Build and Push Docker Container / build-and-push (push) Successful in 1m36s
- Store synced folder locations in file_path instead of embedding them in file names. - Add ignore rules from .nanoshareignore and repeatable sync --ignore flags. - Adopt existing remote files only after SHA-256 verification. - Move adopted remotes with metadata updates instead of uploading duplicates. - Bump NanoShare to 1.23.0 and the standalone CLI to 0.2.0.
19 lines
687 B
Python
19 lines
687 B
Python
from __future__ import annotations
|
|
|
|
from pathlib import PurePosixPath
|
|
|
|
def split_remote_path(value: str, file_id: str = '') -> tuple[str, str]:
|
|
raw = (value or file_id).replace('\\', '/')
|
|
parts = [
|
|
part for part in PurePosixPath(raw).parts
|
|
if part not in ('', '.', '..', '/')
|
|
]
|
|
if not parts:
|
|
return file_id, ''
|
|
return parts[-1], '/'.join(parts[:-1])
|
|
|
|
def join_remote_path(file_name: str, file_path: str | None = None, file_id: str = '') -> str:
|
|
name, embedded_path = split_remote_path(file_name, file_id)
|
|
clean_path = split_remote_path(f'{file_path or ""}/placeholder')[1] if file_path else embedded_path
|
|
return f'{clean_path}/{name}' if clean_path else name
|