48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
"""路径与环境:与 account-manager 一致的数据根目录。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import sys
|
|
from typing import Optional
|
|
|
|
SKILL_SLUG = "content-manager"
|
|
|
|
|
|
def get_skill_root() -> str:
|
|
# content_manager/config.py -> 技能根 content-manager/
|
|
return os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
|
|
def get_openclaw_root() -> str:
|
|
return os.path.dirname(get_skill_root())
|
|
|
|
|
|
def get_data_root() -> str:
|
|
env = (os.getenv("JIANGCHANG_DATA_ROOT") or "").strip()
|
|
if env:
|
|
return env
|
|
if sys.platform == "win32":
|
|
return r"D:\jiangchang-data"
|
|
return os.path.join(os.path.expanduser("~"), ".jiangchang-data")
|
|
|
|
|
|
def get_user_id() -> str:
|
|
return (os.getenv("JIANGCHANG_USER_ID") or "").strip() or "_anon"
|
|
|
|
|
|
def get_skill_data_dir() -> str:
|
|
path = os.path.join(get_data_root(), get_user_id(), SKILL_SLUG)
|
|
os.makedirs(path, exist_ok=True)
|
|
return path
|
|
|
|
|
|
def get_db_path() -> str:
|
|
return os.path.join(get_skill_data_dir(), "content-manager.db")
|
|
|
|
|
|
def resolve_stored_path(relative_file_path: str) -> str:
|
|
"""库内相对路径 -> 绝对路径。"""
|
|
rel = (relative_file_path or "").strip().replace("\\", "/").lstrip("/")
|
|
return os.path.normpath(os.path.join(get_skill_data_dir(), rel))
|