Files
ops2/backend/ai_work/migrate-config.py
T
2026-04-01 12:09:02 +08:00

102 lines
4.0 KiB
Python

#!/usr/bin/env python3
"""
将旧的 config.yaml 配置迁移到新的格式
"""
import os
import yaml
import shutil
def migrate_config():
old_path = "./data/config.yaml"
backup_path = "./data/config.yaml.backup"
if not os.path.exists(old_path):
print("Old config not found at", old_path)
print("Creating new default config...")
return
try:
# 备份旧配置
shutil.copy2(old_path, backup_path)
print(f"Backup created: {backup_path}")
# 读取旧配置
with open(old_path, 'r', encoding='utf-8') as f:
old_config = yaml.safe_load(f)
print("Old config structure:", old_config.keys())
# 创建新配置结构
new_config = {
"web": {
"host": old_config.get("web", {}).get("host", "127.0.0.1"),
"port": old_config.get("web", {}).get("port", "8080"),
"tls": old_config.get("web", {}).get("tls", False),
"certPrivatePath": old_config.get("web", {}).get("certPrivatePath", ""),
"certPublicPath": old_config.get("web", {}).get("certPublicPath", ""),
},
"database": {
"type": old_config.get("database", {}).get("type", "sqlite"),
"path": old_config.get("database", {}).get("path", "data/database.db"),
"host": old_config.get("database", {}).get("host", ""),
"port": old_config.get("database", {}).get("port", ""),
"name": old_config.get("database", {}).get("name", ""),
"user": old_config.get("database", {}).get("user", ""),
"pass": old_config.get("database", {}).get("pass", ""),
},
"user": {
"cookieTimeout": old_config.get("user", {}).get("cookieTimeout", 604800),
"passHashType": old_config.get("user", {}).get("passHashType", "md5"),
},
"file": {
"maxSize": old_config.get("file", {}).get("maxSize", 52428800),
"paths": old_config.get("file", {}).get("pahts", {
"avatar": "data/static/avatar/",
"image": "data/upload/image/",
"video": "data/upload/video/",
"music": "data/upload/music/",
"pdf": "data/upload/pdf/",
"other": "data/upload/other/",
}),
"allowImageMime": old_config.get("file", {}).get("allowImageMime", {
"image/jpeg": ".jpeg",
"image/png": ".png",
"image/gif": ".gif",
"image/bmp": ".bmp",
}),
"allowVideoMime": old_config.get("file", {}).get("allowVideoMime", {
"video/mp4": ".mp4",
"video/x-msvideo": ".avi",
"video/quicktime": ".mov",
"video/x-flv": ".flv",
"video/mpeg": ".mpeg",
}),
"allowMusicMime": old_config.get("file", {}).get("allowMusicMime", {
"audio/mpeg": ".mpeg",
"audio/aac": ".aac",
"audio/wav": ".wav",
"audio/flac": ".flac",
}),
"allowPdfMime": old_config.get("file", {}).get("allowPdfMime", {
"application/pdf": ".pdf",
}),
}
}
# 写入新配置
with open(old_path, 'w', encoding='utf-8') as f:
yaml.dump(new_config, f, default_flow_style=False, allow_unicode=True, sort_keys=False)
print("Config migrated successfully!")
print(f"New config saved to {old_path}")
except Exception as e:
print(f"Migration failed: {e}")
if os.path.exists(backup_path):
print("Restoring backup...")
shutil.copy2(backup_path, old_path)
print("Backup restored")
if __name__ == "__main__":
migrate_config()