Files
skill-template/api-key-vault/scripts/vault.py
2026-04-04 10:35:02 +08:00

105 lines
2.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import sys
import os
# .env文件路径固定在api-key-vault根目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
ENV_FILE = os.path.join(BASE_DIR, ".env")
def load_keys():
"""读取.env文件返回dict"""
keys = {}
if not os.path.exists(ENV_FILE):
return keys
with open(ENV_FILE, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if not line or line.startswith("#"):
continue
if "=" in line:
name, _, value = line.partition("=")
keys[name.strip()] = value.strip()
return keys
def save_keys(keys):
"""把dict写回.env文件"""
with open(ENV_FILE, "w", encoding="utf-8") as f:
f.write("# API Key Vault - 自动生成,请勿手动乱改\n")
for name, value in keys.items():
f.write(f"{name}={value}\n")
def cmd_get(name):
keys = load_keys()
if name not in keys:
print("ERROR:KEY_NOT_FOUND")
else:
print(keys[name])
def cmd_set(name, value):
keys = load_keys()
keys[name] = value
save_keys(keys)
print(f"✅ 已保存:{name}")
def cmd_list():
keys = load_keys()
if not keys:
print("暂无已存储的Key")
return
print("已存储的Key列表")
for name in keys:
value = keys[name]
# 只显示前4位和后4位中间用*遮挡
masked = value[:4] + "****" + value[-4:] if len(value) > 8 else "****"
print(f" · {name} = {masked}")
def cmd_delete(name):
keys = load_keys()
if name not in keys:
print(f"❌ 未找到:{name}")
else:
del keys[name]
save_keys(keys)
print(f"🗑 已删除:{name}")
if __name__ == "__main__":
if len(sys.argv) < 2:
print("用法:")
print(" python vault.py get <key名>")
print(" python vault.py set <key名> <key值>")
print(" python vault.py list")
print(" python vault.py delete <key名>")
sys.exit(1)
command = sys.argv[1].lower()
if command == "get":
if len(sys.argv) < 3:
print("错误get命令需要提供key名")
sys.exit(1)
cmd_get(sys.argv[2])
elif command == "set":
if len(sys.argv) < 4:
print("错误set命令需要提供key名和key值")
sys.exit(1)
cmd_set(sys.argv[2], sys.argv[3])
elif command == "list":
cmd_list()
elif command == "delete":
if len(sys.argv) < 3:
print("错误delete命令需要提供key名")
sys.exit(1)
cmd_delete(sys.argv[2])
else:
print(f"错误:未知命令 {command}")
sys.exit(1)