Files
orc-order-v2/scripts/manual_sync.py
T

64 lines
2.5 KiB
Python

import os
import sys
import json
from pathlib import Path
# Add project root to path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
from app.core.utils.cloud_sync import GiteaSync
from app.config.settings import ConfigManager
def sync_all():
config = ConfigManager()
sync = GiteaSync.from_config(config)
if not sync:
print("Error: Gitea configuration missing in config.ini")
sys.exit(1)
# Sync files defined in dialog_utils.py (re-implementing the logic here)
SYNC_FILES = [
{"name": "条码映射", "remote": "barcode_mappings.json", "local": "config/barcode_mappings.json", "type": "json"},
{"name": "供应商配置", "remote": "suppliers_config.json", "local": "config/suppliers_config.json", "type": "json"},
{"name": "商品资料", "remote": "templates/商品资料.xlsx", "local": "templates/商品资料.xlsx", "type": "binary"},
{"name": "采购单模板", "remote": "templates/银豹-采购单模板.xls", "local": "templates/银豹-采购单模板.xls", "type": "binary"},
{"name": "商品记忆库 (DB)", "remote": "product_cache.db", "local": "data/product_cache.db", "type": "binary"},
]
print(f"Starting sync to {sync.base_url}/{sync.owner}/{sync.repo}...")
success_count = 0
for entry in SYNC_FILES:
local_path = entry["local"]
remote_path = entry["remote"]
name = entry["name"]
if not os.path.exists(local_path):
print(f"Skipping {name}: Local file not found at {local_path}")
continue
print(f"Pushing {name} ({local_path}) -> {remote_path}...")
try:
if entry["type"] == "json":
with open(local_path, "r", encoding="utf-8") as f:
data = json.load(f)
# Get current SHA to update
sha = sync.file_exists(remote_path)
result = sync.push_json(remote_path, data, f"Sync: {name}", sha=sha)
else:
result = sync.push_binary(remote_path, local_path, f"Sync: {name}")
if result:
print(f"Successfully synced {name}")
success_count += 1
else:
print(f"Failed to sync {name}")
except Exception as e:
print(f"Error syncing {name}: {e}")
print(f"\nSync finished. {success_count}/{len(SYNC_FILES)} files synced.")
if __name__ == "__main__":
sync_all()