# اسکریپت‌های مدیریت ماژول‌ها این ریپو چند اسکریپت کمکی برای مدیریت ماژول‌ها، ساب‌ماژول `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 ```