feat: 切换数据库至 PostgreSQL、支持环境变量
未来计划支持多种数据库,从 PostgreSQL 开始! 支持从环境变量读取启动设置,添加 nyahome env 命令用来持久化环境变量。 BREAKING CHANGE: 切换开发阶段的数据库,从 SQLite 到 PostgreSQL。
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
from rich.console import Console
|
||||
|
||||
console = Console()
|
||||
@@ -0,0 +1,61 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
from typing import Annotated
|
||||
|
||||
import typer
|
||||
from dotenv import load_dotenv, set_key, unset_key
|
||||
from rich.table import Table
|
||||
|
||||
from .cli import console
|
||||
|
||||
env_app = typer.Typer()
|
||||
|
||||
|
||||
ENV_PATH = Path.cwd() / ".nyahome" / ".env"
|
||||
|
||||
|
||||
@env_app.command(name="list")
|
||||
def list_all_envs() -> None:
|
||||
"""
|
||||
列出所有以 NYAHOME_ 开头的环境变量。
|
||||
|
||||
这些变量可能配置在 .nyahome 内的 .env 文件中,或者通过其他方式预先设置。
|
||||
"""
|
||||
if not load_dotenv(ENV_PATH):
|
||||
console.print(
|
||||
"[bright_black]未在 .nyahome 目录下读取到任何环境变量。如果这是有意为之,则请无需担心。[/bright_black]"
|
||||
)
|
||||
table = Table(title="NyaHome 应用的环境变量")
|
||||
table.add_column("Key", style="cyan", no_wrap=True)
|
||||
table.add_column("Value", style="white")
|
||||
|
||||
for env in os.environ.items():
|
||||
if env[0].startswith("NYAHOME_"):
|
||||
table.add_row(env[0], env[1])
|
||||
|
||||
console.print(table)
|
||||
|
||||
|
||||
@env_app.command(name="set")
|
||||
def set_env(
|
||||
key: Annotated[str, typer.Argument(help="不包含 NYAHOME_ 的键名")],
|
||||
value: Annotated[str, typer.Argument(help="环境变量值")],
|
||||
) -> None:
|
||||
"""
|
||||
设置 NYAHOME_ 环境变量。请参考 NyaHome 文档以了解使用方法。
|
||||
|
||||
保存在 .nyahome 内的 .env 文件。
|
||||
"""
|
||||
set_key(ENV_PATH, f"NYAHOME_{key.upper()}", value)
|
||||
console.print(f"[cyan]已设置环境变量 NYAHOME_{key}。[/cyan]")
|
||||
|
||||
|
||||
@env_app.command(name="unset")
|
||||
def unset_env(key: Annotated[str, typer.Argument(help="不包含 NYAHOME_ 的键名")]) -> None:
|
||||
"""
|
||||
删除 NYAHOME_ 环境变量。
|
||||
|
||||
操作在 .nyahome 内的 .env 文件。
|
||||
"""
|
||||
unset_key(ENV_PATH, f"NYAHOME_{key.upper()}")
|
||||
console.print(f"[cyan]已删除环境变量 NYAHOME_{key}。[/cyan]")
|
||||
Reference in New Issue
Block a user