رفتن به محتوا

مشارکت

Terminal window
git clone https://github.com/getmeridian/meridian.git && cd meridian
# نصب CLI در حالت قابل ویرایش با وابستگی‌های توسعه
make install
# نصب hook پیش‌فشار (بررسی‌های سریع پیش از هر فشار)
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 یک package Python است (src/meridian/) که از طریق PyPI به‌عنوان meridian-vpn توزیع می‌شود.

ماژول‌های کلیدی:

  • cli.py — Typer app، ثبت subcommand
  • commands/ — یک ماژول برای هر subcommand
  • cluster.py + cluster_persistence.py — typed cluster.yml state و persistence
  • servers.py — ServerRegistry برای سرورهای شناخته‌شده
  • setup/ — وضعیت ماژول meridian setup و runtime به‌اشتراک‌گذاری شده در پس deploy، setup و apply
  • compiler/ — تبدیل topology به لیست منابع مرور‌شده و hash-identified (بدون I/O)
  • reconciler/ — مشاهده و اعمال آن منابع با checkpoints
  • provision/ — مراحل آماده‌سازی سرور (package‌ها، hardening، Docker، Realm)
  1. repo را fork کنید و branch را از main ایجاد کنید
  2. تغییرات متمرکز و کمینه انجام دهید
  3. اطمینان دهید CI موفق است: make ci
  4. در صورت امکان روی سرور واقعی تست کنید
  5. یک PR را با توضیح واضح باز کنید
  • مقادیر شل از shlex.quote() استفاده می‌کنند — هیچ‌گاه مقادیر غیرتمیز را تقسیم نکنید
  • PWA assets باید همگام بمانند (templates/pwa/ و کاتالوگ برنامه)
  • پیکربندی nginx به‌عنوان منبع per-resource به‌عنوان فایل‌های meridian-v4-*.conf در /etc/nginx/stream.d/ و /etc/nginx/sites-available/ نوشته می‌شود
  • مراحل provisioner StepResult را بازمی‌گردانند (ok/changed/skipped/failed)

CI اعتبارسنجی می‌کند: تست Python، lint ruff، نوع mypy، رندر template و syntax اسکریپت شل. تست deployment کامل نیاز به VPS واقعی دارد.