123 lines
2.3 KiB
Bash
Executable File
123 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
BUILD_FLAG=0
|
|
FORCE_FLAG=0
|
|
DOCKER_MODULES=()
|
|
MAX_STEP=3
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Usage:
|
|
./bootstrap_modules.sh [--build] [--force] [--step N] [module ...]
|
|
|
|
Steps:
|
|
1. Run `add_submodules.sh`
|
|
2. Run `add_schemas_submodule.sh`
|
|
3. Run `run_docker_modules.sh`
|
|
|
|
Options:
|
|
--build Pass `--build` to `run_docker_modules.sh`
|
|
--force Pass `--force` to submodule add scripts
|
|
--step N Run only up to step N (1, 2, or 3)
|
|
-h, --help Show this help message
|
|
|
|
Examples:
|
|
./bootstrap_modules.sh
|
|
./bootstrap_modules.sh --step 2
|
|
./bootstrap_modules.sh --force
|
|
./bootstrap_modules.sh --build
|
|
./bootstrap_modules.sh Ai Backend
|
|
./bootstrap_modules.sh --build Ai SensorHub
|
|
./bootstrap_modules.sh --force --step 2
|
|
EOF
|
|
}
|
|
|
|
while [[ "$#" -gt 0 ]]; do
|
|
case "$1" in
|
|
--build)
|
|
BUILD_FLAG=1
|
|
shift
|
|
;;
|
|
--force)
|
|
FORCE_FLAG=1
|
|
shift
|
|
;;
|
|
--step)
|
|
if [[ "$#" -lt 2 ]]; then
|
|
echo "Missing value for --step" >&2
|
|
usage
|
|
exit 1
|
|
fi
|
|
MAX_STEP="$2"
|
|
shift 2
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
--)
|
|
shift
|
|
while [[ "$#" -gt 0 ]]; do
|
|
DOCKER_MODULES+=("$1")
|
|
shift
|
|
done
|
|
;;
|
|
-*)
|
|
echo "Unknown option: $1" >&2
|
|
usage
|
|
exit 1
|
|
;;
|
|
*)
|
|
DOCKER_MODULES+=("$1")
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ ! "$MAX_STEP" =~ ^[1-3]$ ]]; then
|
|
echo "Invalid value for --step: ${MAX_STEP}. Use 1, 2, or 3." >&2
|
|
exit 1
|
|
fi
|
|
|
|
run_script() {
|
|
local script_path="$1"
|
|
shift || true
|
|
|
|
if [[ ! -x "$script_path" ]]; then
|
|
echo "Script is not executable: ${script_path}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Running ${script_path} $*"
|
|
"$script_path" "$@"
|
|
}
|
|
|
|
submodule_args=()
|
|
if [[ "$FORCE_FLAG" -eq 1 ]]; then
|
|
submodule_args+=("--force")
|
|
fi
|
|
|
|
if [[ "$MAX_STEP" -ge 1 ]]; then
|
|
run_script "./add_submodules.sh" "${submodule_args[@]}"
|
|
fi
|
|
|
|
if [[ "$MAX_STEP" -ge 2 ]]; then
|
|
run_script "./add_schemas_submodule.sh" "${submodule_args[@]}"
|
|
fi
|
|
|
|
docker_args=()
|
|
if [[ "$BUILD_FLAG" -eq 1 ]]; then
|
|
docker_args+=("--build")
|
|
fi
|
|
if [[ "${#DOCKER_MODULES[@]}" -gt 0 ]]; then
|
|
docker_args+=("${DOCKER_MODULES[@]}")
|
|
fi
|
|
|
|
if [[ "$MAX_STEP" -ge 3 ]]; then
|
|
run_script "./run_docker_modules.sh" "${docker_args[@]}"
|
|
fi
|
|
|
|
echo "Bootstrap completed."
|