ملف Makefile الرئيسي هو أداة تنسيق البناء المركزية لمستودع Bedrud الأحادي. يوفر أوامر للتطوير والبناء والنشر عبر جميع المنصات.
الاستخدام
make <target>
make help # Show all available targetsأهداف التطوير
| الهدف | الوصف |
|---|---|
make init | تثبيت جميع التبعيات (LiveKit + الإعدادات + bun + Go) |
make dev | تشغيل LiveKit + الخادم (إعادة التحميل التلقائي) + الويب بشكل متزامن |
make dev-web | تشغيل خادم تطوير الواجهة فقط |
make dev-server | تشغيل خادم الخلفية + LiveKit |
make dev-server-hot | تشغيل الخلفية مع Air (إعادة التحميل التلقائي) |
make dev-api | تشغيل الخلفية فقط، بدون LiveKit |
make dev-livekit | تشغيل خادم LiveKit المحلي |
make dev-site | تشغيل خادم تطوير موقع Astro |
make dev-ios | فتح مشروع iOS في Xcode |
make dev-android | فتح مشروع Android في Android Studio |
make init
إعداد كامل لبيئة تطوير جديدة:
- تنزيل ملف LiveKit الثنائي إلى
~/.local/bin/(إذا لم يكن في PATH) - إنشاء
server/config.yamlمن قالبconfig.local.yaml(إذا لم يكن موجودًا) - إنشاء عنصر نائب لـ LiveKit المدمج في
server/internal/livekit/bin/livekit-server - تثبيت
airلإعادة التحميل التلقائي لـ Go (إذا لم يكن مثبتًا) - تثبيت التبعيات:
apps/web(bun)،apps/site(bun)،server(go mod)
make dev
يُشغّل خدمات التطوير الثلاث بشكل متزامن. اضغط Ctrl+C لإيقاف الكل:
- LiveKit على
localhost:7880 - الخادم على
localhost:8090 - الويب على
localhost:3000
أهداف البناء
| الهدف | الوصف |
|---|---|
make build | بناء الواجهة + الخلفية (مضمنة) |
make build-front | بناء الواجهة فقط |
make build-back | بناء الخلفية فقط |
make build-dist | بناء أرشيف إنتاج linux/amd64 |
make build-site | بناء موقع Astro (SSG) |
make build
بناء إنتاجي كامل:
- يُشغّل
bun run buildفيapps/web— يبني تطبيق React - ينسخ
apps/web/dist/client/*→server/frontend/ - يبني الملف الثنائي Go مع الواجهة المضمنة
المخرجات: server/dist/bedrud
make build-dist
ينشئ توزيعة إنتاجية مضغوطة:
- يُشغّل
make build - يُترجم تصادريًا لـ
linux/amd64مع إزالة رموز التنقيح - ينشئ
dist/bedrud_linux_amd64.tar.xz
أهداف سطح المكتب
| الهدف | الوصف |
|---|---|
make dev-desktop | بناء وتشغيل تطبيق سطح المكتب (تصحيح) |
make build-desktop | بناء ملف ثنائي release محسّن |
ملف ثنائي محلي واحد
| الهدف | الوصف |
|---|---|
make local-build | بناء الواجهة + الخلفية في ملف ثنائي واحد |
make local-run | بناء + تشغيل محلي (SQLite، LiveKit مضمن) |
make local-run
يبني ويبدأ الملف الثنائي الواحد بالإعدادات المحلية:
CONFIG_PATH=server/config.local.yaml server/dist/bedrud runافتح http://localhost:8090 عند الاستعداد.
توثيق API
| الهدف | الوصف |
|---|---|
make swagger-gen | إعادة توليد توثيق Swagger من التعليقات التوضيحية |
make swagger-open | فتح Swagger UI في المتصفح |
make scalar-open | فتح Scalar UI في المتصفح |
يتطلب CLI swag (go install github.com/swaggo/swag/cmd/swag@latest). يجب أن يكون الخادم قيد التشغيل لاستخدام swagger-open و scalar-open.
أهداف Android
| الهدف | الوصف |
|---|---|
make build-android-debug | بناء APK تصحيح |
make build-android | بناء APK إصدار (يتطلب مخزن مفاتيح) |
make install-android | تثبيت APK الإصدار على الجهاز المتصل |
make release-android | بناء + تثبيت APK الإصدار |
مسارات مخرجات APK
- التصحيح:
apps/android/app/build/outputs/apk/debug/app-debug.apk - الإصدار:
apps/android/app/build/outputs/apk/release/app-release.apk
أهداف iOS
| الهدف | الوصف |
|---|---|
make build-ios | بناء أرشيف iOS (إصدار) |
make export-ios | تصدير IPA من الأرشيف |
make build-ios-sim | بناء لمحاكي iOS (تصحيح) |
مسارات المخرجات
- الأرشيف:
apps/ios/build/Bedrud.xcarchive - IPA:
apps/ios/build/export/Bedrud.ipa
هدف النشر
| الهدف | الوصف |
|---|---|
make deploy ARGS=... | تشغيل أداة نشر CLI |
مثال
make deploy ARGS="--auto-config --ip 1.2.3.4 --user root --domain meet.example.com"يُشغّل أداة CLI في Python عند tools/cli/bedrud.py بالمعطيات المقدمة.
الاختبار
| الهدف | الوصف |
|---|---|
make test-back | تشغيل اختبارات الخلفية (go test -v -count=1 ./...) |
أهداف التنظيف
| الهدف | الوصف |
|---|---|
make clean | إزالة مُنتَجات البناء والملفات الثنائية المُترجمة |
make full-clean | إزالة المُنتَجات + جميع التبعيات المثبتة |
make clean
يزيل:
dist/— أرشيفات التوزيعةserver/dist/— الملف الثنائي المُترجم للخادمapps/web/dist/— مخرجات بناء React- محتويات
server/frontend/— أصول الواجهة المضمنة apps/android/app/build/— مخرجات بناء Androidapps/ios/build/— مخرجات بناء iOSapps/site/dist/— مخرجات بناء موقع Astrotarget/— مخرجات بناء Rust/Cargo
make full-clean
كل ما يفعله clean، بالإضافة إلى:
apps/web/node_modules/apps/site/node_modules/apps/android/.gradle/apps/android/build/- ذاكرة تخزين وحدات Go (
go clean -modcache)
شغّل make init بعدها لإعادة تثبيت التبعيات.