75 lines
2.5 KiB
Bash
Executable File
75 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
# shellcheck disable=SC1091
|
|
source "$SCRIPT_DIR/common.sh"
|
|
|
|
load_local_env
|
|
|
|
NACOS_SOURCE_DIR="${LIKEI_NACOS_CONFIG_ROOT:-$JAVA_REPO_DIR/nacos_config}"
|
|
NACOS_CONFIG_HOST="${NACOS_CONFIG_HOST:?missing NACOS_CONFIG_HOST}"
|
|
NACOS_CONFIG_PORT="${NACOS_CONFIG_PORT:?missing NACOS_CONFIG_PORT}"
|
|
NAMESPACE_ID="${NAMESPACE_ID:-${LIKEI_NACOS_NAMESPACE:?missing LIKEI_NACOS_NAMESPACE}}"
|
|
NAMESPACE_NAME="${NAMESPACE_NAME:-${LIKEI_NACOS_NAMESPACE_NAME:?missing LIKEI_NACOS_NAMESPACE_NAME}}"
|
|
NACOS_CONFIG_BASE_URL="http://${NACOS_CONFIG_HOST}:${NACOS_CONFIG_PORT}/nacos"
|
|
|
|
TMP_DIR="$(mktemp -d)"
|
|
cleanup() {
|
|
rm -rf "$TMP_DIR"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
cp -R "$NACOS_SOURCE_DIR/." "$TMP_DIR/"
|
|
if [ -f "$TMP_DIR/common/external.yml" ]; then
|
|
cp "$TMP_DIR/common/external.yml" "$TMP_DIR/common/external-config.yml"
|
|
fi
|
|
if [ -f "$TMP_DIR/common/framework-config.yml" ]; then
|
|
sed -i.bak '/^[[:space:]]*- game-fruit[[:space:]]*$/d' "$TMP_DIR/common/framework-config.yml"
|
|
rm -f "$TMP_DIR/common/framework-config.yml.bak"
|
|
fi
|
|
|
|
if [ "$NAMESPACE_ID" != "public" ]; then
|
|
for _ in $(seq 1 60); do
|
|
if curl -fsS "${NACOS_CONFIG_BASE_URL}/" >/dev/null; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
curl -fsS -X POST "$NACOS_CONFIG_BASE_URL/v1/console/namespaces" \
|
|
--data-urlencode "customNamespaceId=${NAMESPACE_ID}" \
|
|
--data-urlencode "namespaceName=${NAMESPACE_NAME}" \
|
|
--data-urlencode "namespaceDesc=${NAMESPACE_NAME}" >/dev/null || true
|
|
fi
|
|
|
|
publish_file() {
|
|
local file_path="$1"
|
|
local group="$2"
|
|
local data_id="$3"
|
|
|
|
if [ "$NAMESPACE_ID" = "public" ]; then
|
|
curl -fsS -X POST "$NACOS_CONFIG_BASE_URL/v1/cs/configs" \
|
|
--data-urlencode "group=${group}" \
|
|
--data-urlencode "dataId=${data_id}" \
|
|
--data-urlencode "type=yaml" \
|
|
--data-urlencode "content@${file_path}" >/dev/null
|
|
else
|
|
curl -fsS -X POST "$NACOS_CONFIG_BASE_URL/v1/cs/configs" \
|
|
--data-urlencode "tenant=${NAMESPACE_ID}" \
|
|
--data-urlencode "group=${group}" \
|
|
--data-urlencode "dataId=${data_id}" \
|
|
--data-urlencode "type=yaml" \
|
|
--data-urlencode "content@${file_path}" >/dev/null
|
|
fi
|
|
|
|
printf 'published %s/%s\n' "$group" "$data_id"
|
|
}
|
|
|
|
while IFS= read -r file_path; do
|
|
[ -f "$file_path" ] || continue
|
|
group_name="$(basename "$(dirname "$file_path")")"
|
|
data_id="$(basename "$file_path")"
|
|
publish_file "$file_path" "$group_name" "$data_id"
|
|
done < <(find "$TMP_DIR" -type f -name '*.yml' | sort)
|