مشارکت
گزارش مسائل
- باگ؟ از template گزارش باگ استفاده کنید — ابتدا
meridian doctorرا اجرا کنید - مسئله اتصال؟ از template مسئله اتصال استفاده کنید — ابتدا
meridian testوmeridian preflightرا اجرا کنید - ایده ویژگی؟ از template درخواست ویژگی استفاده کنید
- آسیبپذیری امنیتی؟ امنیت را ببینید — یک issue عمومی باز نکنید
تنظیم توسعه
git clone https://github.com/uburuntu/meridian.git && cd meridian
# نصب CLI در حالت قابل ویرایش با وابستگیهای توسعه
make install
# نصب pre-push hook (11 بررسی سریع قبل از هر push)
make hooks
# اجرای کل CI محلی
make ci
# بررسیهای جداگانه:
make test # pytest
make lint # ruff check
make format-check # ruff format --check
make typecheck # mypy
make templates # Jinja2 template validation
ساختار پروژه
CLI یک بسته Python است (src/meridian/) که از طریق PyPI به عنوان meridian-vpn توزیع میشود.
ماژولهای کلیدی:
cli.py— Typer app، ثبت subcommandcommands/— یک ماژول در هر subcommandcredentials.py— dataclassServerCredentialsservers.py—ServerRegistryبرای سرورهای شناختهشدهprovision/— خط لوله مرحله idempotent
درخواستهای Pull
- مخزن را fork کنید و یک شاخه از
mainایجاد کنید - تغییرات متمرکز، حداقلی انجام دهید
- مطمئن شوید CI موفق است:
make ci - اگر ممکن است روی یک سرور واقعی تست کنید
- یک PR با توضیح واضح باز کنید
قراردادهای کلیدی
- مقادیر Shell از
shlex.quote()استفاده میکنند — هرگز مقادیر تمیزنشده را درونیاب نکنید - templateهای connection-info باید همگام باشند (CSS/JS/app links)
- پیکربندی Caddy به
/etc/caddy/conf.d/meridian.caddyمیرود، نه Caddyfile اصلی - مراحل Provisioner
StepResultبرمیگردانند (ok/changed/skipped/failed)
تست
CI تأیید میکند: آزمونهای Python، ruff lint، mypy types، rendering template، و syntax اسکریپت shell. تست نصب کامل نیاز به یک VPS واقعی دارد.