贡献

报告问题

开发设置

git clone https://github.com/uburuntu/meridian.git && cd meridian

# 在可编辑模式下安装 CLI 和开发依赖
make install

# 安装 pre-push 钩子(每次推送前进行 11 个快速检查)
make hooks

# 在本地运行完整 CI
make ci

# 单独检查:
make test              # pytest
make lint              # ruff check
make format-check      # ruff format --check
make typecheck         # mypy
make templates         # Jinja2 模板验证

项目结构

CLI 是一个 Python 包(src/meridian/),通过 PyPI 分发为 meridian-vpn

关键模块:

  • cli.py——Typer 应用、子命令注册
  • commands/——每个子命令一个模块
  • credentials.py——ServerCredentials 数据类
  • servers.py——ServerRegistry 用于已知服务器
  • provision/——幂等步骤管道

Pull Requests

  1. Fork 仓库并从 main 创建分支
  2. 进行有针对性的最小更改
  3. 确保 CI 通过:make ci
  4. 如果可能,在真实服务器上测试
  5. 使用清晰的描述开放 PR

关键约定

  • Shell 值使用 shlex.quote()——不要插入未清理的值
  • Connection-info 模板必须保持同步(CSS/JS/应用链接)
  • Caddy 配置放在 /etc/caddy/conf.d/meridian.caddy,不是主 Caddyfile
  • 配置程序步骤返回 StepResult(ok/changed/skipped/failed)

测试

CI 验证:Python 测试、ruff lint、mypy 类型、模板渲染和 shell 脚本语法。完整部署测试需要真实的 VPS。

On this page