feat(cli): sync folders with remote paths
Build and Push Docker Container / build-and-push (push) Successful in 1m36s
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.
This commit is contained in:
@@ -10,7 +10,7 @@ import httpx
|
||||
def content_type(path: Path) -> str:
|
||||
return mimetypes.guess_type(path.name)[0] or 'application/octet-stream'
|
||||
|
||||
def upload(client, node: str, path: Path, remote_name: str, note: str, expires: str) -> dict:
|
||||
def upload(client, node: str, path: Path, remote_name: str, note: str, expires: str, remote_path: str = '') -> dict:
|
||||
content_b64 = base64.b64encode(path.read_bytes()).decode('ascii')
|
||||
params = {
|
||||
'file_name': remote_name,
|
||||
@@ -18,11 +18,24 @@ def upload(client, node: str, path: Path, remote_name: str, note: str, expires:
|
||||
'content_type': content_type(path),
|
||||
'note': note,
|
||||
}
|
||||
if remote_path:
|
||||
params['file_path'] = remote_path
|
||||
if expires:
|
||||
params['expires'] = expires
|
||||
result = client.call(node, 'files.upload', params)
|
||||
return result if isinstance(result, dict) else {'result': result}
|
||||
|
||||
def update_remote(client, node: str, file_id: str, file_name: str, file_path: str, note: str, expires: str) -> None:
|
||||
params = {
|
||||
'file_id': file_id,
|
||||
'file_name': file_name,
|
||||
'file_path': file_path,
|
||||
'note': note,
|
||||
}
|
||||
if expires:
|
||||
params['expires'] = expires
|
||||
client.call(node, 'files.update', params)
|
||||
|
||||
def delete_remote(client, node: str, file_id: str) -> None:
|
||||
client.call(node, 'files.delete', {'file_id': file_id})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user