#!/bin/bash
set -e
SCRIPT_DIR=$(cd "$(dirname "$0")"; pwd)
INTERFACE_DIR=$(cd "${SCRIPT_DIR}/../.."; pwd)
INTERFACE_OHOS_GLUE_DIR="${INTERFACE_DIR}/ohos_glue"
CONFIG_FILE="${INTERFACE_OHOS_GLUE_DIR}/scripts/bridge_generation.conf.json"
MODULE=""
LOG_DIR=""
STAMP_FILE=""
while [[ $# -gt 0 ]]; do
case "$1" in
--stamp)
STAMP_FILE="$2"
shift 2
;;
--log-dir)
LOG_DIR="$2"
shift 2
;;
*)
if [ -z "$MODULE" ]; then
MODULE="$1"
fi
shift
;;
esac
done
log_message() {
local message="$1"
if [ -n "$LOG_DIR" ]; then
echo "$message" >> "${LOG_DIR}/prepare.log"
fi
echo "$message"
}
log_message "========================================"
log_message "开始执行 bridge_gen.sh..."
log_message "模块: ${MODULE:-所有模块}"
log_message "时间: $(date '+%Y-%m-%d %H:%M:%S')"
if [ -n "$LOG_DIR" ]; then
log_message "日志目录: $LOG_DIR"
fi
if [ -n "$STAMP_FILE" ]; then
log_message "Stamp 文件: $STAMP_FILE"
fi
log_message "========================================"
if [ -z "$MODULE" ]; then
MODULES="nweb adapter"
else
MODULES="$MODULE"
fi
generate_bridge() {
local module=$1
local bridge_system=""
case "${module}" in
nweb|webcore) bridge_system="ohos_nweb" ;;
adapter|webview) bridge_system="ohos_adapter" ;;
*)
log_message "Error: Unknown module '${module}'" >&2
return 1
;;
esac
if [ ! -f "$CONFIG_FILE" ]; then
log_message "Error: Config file not found: $CONFIG_FILE" >&2
return 1
fi
log_message "Generating bridge files for ${bridge_system}..."
(
cd "${INTERFACE_DIR}"
python3 "${INTERFACE_OHOS_GLUE_DIR}/scripts/bridge_gen_files.py" \
--config "$CONFIG_FILE" \
--output "$INTERFACE_OHOS_GLUE_DIR" \
--system "$bridge_system" \
--base-dir "." 2>&1
) | while IFS= read -r line; do
log_message "$line"
done
log_message "Bridge files generation completed for ${bridge_system}"
}
for module in $MODULES; do
generate_bridge "$module"
done
log_message "========================================"
log_message "bridge_gen.sh 执行完成"
log_message "时间: $(date '+%Y-%m-%d %H:%M:%S')"
log_message "========================================"
if [ -n "$STAMP_FILE" ]; then
mkdir -p "$(dirname "$STAMP_FILE")"
echo "Generated bridge files for $MODULES" > "$STAMP_FILE"
log_message "Stamp 文件已生成: $STAMP_FILE"
fi