This commit is contained in:
2026-04-27 04:31:32 +03:30
commit 8feb949d7d
8 changed files with 773 additions and 0 deletions
+236
View File
@@ -0,0 +1,236 @@
# اسکریپت‌های مدیریت ماژول‌ها
این ریپو چند اسکریپت کمکی برای مدیریت ماژول‌ها، ساب‌ماژول `Schemas` و اجرای Docker دارد. در این فایل، کاربرد هر اسکریپت و نحوه استفاده از آن به فارسی توضیح داده شده است.
## 1) افزودن همه ماژول‌ها به‌صورت submodule
فایل:
```bash
./add_submodules.sh
```
کار این اسکریپت:
- ماژول‌های `Ai`، `SensorHub`، `Backend`، `Accsess` و `Schemas` را به‌صورت submodule اضافه می‌کند
- branch پیش‌فرض روی `develop` است
- اگر submodule از قبل ثبت شده باشد، همان ماژول را skip می‌کند
استفاده:
```bash
./add_submodules.sh
```
اگر می‌خواهید `git submodule add` با `--force` اجرا شود:
```bash
./add_submodules.sh --force
```
## 2) افزودن `Schemas` به پروژه‌ها
فایل:
```bash
./add_schemas_submodule.sh
```
کار این اسکریپت:
- ساب‌ماژول `Schemas` را داخل پروژه‌های `Ai`، `Backend` و `SensorHub` اضافه می‌کند
- اگر `Schemas` از قبل اضافه شده باشد، آن پروژه را رد می‌کند
- اگر پوشه `Schemas` از قبل وجود داشته باشد، چیزی را overwrite نمی‌کند
استفاده:
```bash
./add_schemas_submodule.sh
```
اگر می‌خواهید `git submodule add` با `--force` اجرا شود:
```bash
./add_schemas_submodule.sh --force
```
فقط برای بعضی پروژه‌ها:
```bash
./add_schemas_submodule.sh Ai Backend
```
ترکیب با `--force`:
```bash
./add_schemas_submodule.sh --force Ai Backend
```
اگر آدرس ریپوی `Schemas` تغییر کرد:
```bash
SCHEMAS_REPO_URL="ssh://git@host:port/path/Schemas.git" ./add_schemas_submodule.sh
```
## 3) pull گرفتن از `Schemas` داخل پروژه‌ها
فایل:
```bash
./pull_schemas_submodule.sh
```
کار این اسکریپت:
- داخل `Ai`، `Backend` و `SensorHub` می‌رود
- اگر `Schemas` به‌عنوان submodule وجود داشته باشد، روی آن `git pull --ff-only` اجرا می‌کند
- اگر submodule هنوز initialize نشده باشد، آن پروژه را رد می‌کند
استفاده:
```bash
./pull_schemas_submodule.sh
```
فقط برای بعضی پروژه‌ها:
```bash
./pull_schemas_submodule.sh Ai SensorHub
```
## 4) pull گرفتن از همه ماژول‌ها
فایل:
```bash
./pull_all_modules.sh
```
کار این اسکریپت:
- روی ماژول‌های اصلی `Accsess`، `Ai`، `Backend`، `Schemas` و `SensorHub` دستور `git pull --ff-only` اجرا می‌کند
- اگر داخل هر ماژول submodule وجود داشته باشد:
- ابتدا `submodule update --init --recursive` اجرا می‌کند
- سپس روی submoduleهای داخلی هم `git pull --ff-only` اجرا می‌کند
استفاده:
```bash
./pull_all_modules.sh
```
فقط برای چند ماژول مشخص:
```bash
./pull_all_modules.sh Ai Backend
```
## 5) اجرای Docker برای ماژول‌ها
فایل:
```bash
./run_docker_modules.sh
```
کار این اسکریپت:
- همه پوشه‌های داخل ریشه پروژه را بررسی می‌کند
- هر پوشه‌ای که فایل Docker Compose داشته باشد اجرا می‌شود
- این فایل‌ها پشتیبانی می‌شوند:
- `docker-compose.yaml`
- `docker-compose.yml`
- `compose.yaml`
- `compose.yml`
- اجرای پیش‌فرض به شکل detached است:
- `docker compose up -d`
استفاده:
```bash
./run_docker_modules.sh
```
فقط برای چند ماژول مشخص:
```bash
./run_docker_modules.sh Ai Backend
```
### اجرای Docker با build
اگر بخواهید قبل از اجرا build هم انجام شود، از فلگ `--build` استفاده کنید:
```bash
./run_docker_modules.sh --build
```
برای چند ماژول مشخص همراه با build:
```bash
./run_docker_modules.sh --build Ai SensorHub
```
### راهنمای اسکریپت Docker
```bash
./run_docker_modules.sh --help
```
## 6) bootstrap کامل ماژول‌ها
فایل:
```bash
./bootstrap_modules.sh
```
کار این اسکریپت:
- در step 1 اسکریپت `add_submodules.sh` را اجرا می‌کند
- در step 2 اسکریپت `add_schemas_submodule.sh` را اجرا می‌کند
- در step 3 اسکریپت `run_docker_modules.sh` را اجرا می‌کند
- می‌تواند `--force` را به اسکریپت‌های add و `--build` را به Docker پاس بدهد
استفاده:
```bash
./bootstrap_modules.sh
```
اجرا فقط تا step 2:
```bash
./bootstrap_modules.sh --step 2
```
اجرا با `--force`:
```bash
./bootstrap_modules.sh --force
```
اجرا با `--force` فقط تا step 2:
```bash
./bootstrap_modules.sh --force --step 2
```
اجرا با build برای Docker:
```bash
./bootstrap_modules.sh --build
```
## نکات مهم
- تمام اسکریپت‌ها طوری نوشته شده‌اند که اگر مسیر موردنظر git repo نباشد یا فایل لازم را نداشته باشد، به‌جای خطای مخرب، آن مورد را skip کنند
- در اسکریپت‌های pull از `--ff-only` استفاده شده تا merge ناخواسته ایجاد نشود
- قبل از اجرا، مطمئن شوید اسکریپت‌ها executable هستند:
```bash
chmod +x add_schemas_submodule.sh
chmod +x pull_schemas_submodule.sh
chmod +x pull_all_modules.sh
chmod +x run_docker_modules.sh
```