| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #!/usr/bin/env bash
- #
- # 一键重新生成测试客户端:
- # 全量 spec bundle → 切出 /v3 + 打补丁 → openapi-generator 生成 PHP(Guzzle) 客户端 → composer install
- #
- # 依赖:
- # - Java 17+(openapi-generator 是 jar)
- # - npx(openapi/ 里已装 @redocly/cli)
- # - php / composer
- #
- # openapi-generator-cli.jar 通过环境变量 OPENAPI_GENERATOR_JAR 指定,
- # 默认 /tmp/og/openapi-generator-cli.jar。下载方式:
- # curl -L https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.25.0/openapi-generator-cli-7.25.0.jar \
- # -o /tmp/og/openapi-generator-cli.jar
- set -euo pipefail
- ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
- OG_JAR="${OPENAPI_GENERATOR_JAR:-/tmp/og/openapi-generator-cli.jar}"
- COMPOSER_CACHE="${COMPOSER_CACHE_DIR:-/tmp/composer-cache}"
- if [ ! -f "$OG_JAR" ]; then
- echo "找不到 openapi-generator-cli.jar:$OG_JAR" >&2
- echo "下载:curl -L https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.25.0/openapi-generator-cli-7.25.0.jar -o /tmp/og/openapi-generator-cli.jar" >&2
- exit 1
- fi
- echo "1/4 bundle 全量 spec → spec/openapi.json"
- (cd "$ROOT/openapi" && npx redocly bundle public/assets/protocol/main.yaml -o "$ROOT/api-test/spec/openapi.json" --ext json)
- echo "2/4 切出 /v3 + 打补丁 → spec/openapi-v3.json"
- php "$ROOT/api-test/tools/filter-v3.php" "$ROOT/api-test/spec/openapi.json" "$ROOT/api-test/spec/openapi-v3.json"
- echo "3/4 openapi-generator 生成 PHP 客户端 → client/"
- rm -rf "$ROOT/api-test/client"
- java -jar "$OG_JAR" generate -g php \
- -i "$ROOT/api-test/spec/openapi-v3.json" \
- -o "$ROOT/api-test/client" \
- --additional-properties=invokerPackage=WikipaliApi,packageName=wikipali/api-client,artifactVersion=1.0.0
- # 清掉 openapi-generator 的样板文件(.openapi-generator-ignore 只能防止覆盖已编辑文件,
- # 不能阻止生成,所以这里生成后直接删,只留 lib/ + composer.json)
- rm -rf \
- "$ROOT/api-test/client/docs" \
- "$ROOT/api-test/client/test" \
- "$ROOT/api-test/client/README.md" \
- "$ROOT/api-test/client/.travis.yml" \
- "$ROOT/api-test/client/phpunit.xml.dist" \
- "$ROOT/api-test/client/.php-cs-fixer.dist.php" \
- "$ROOT/api-test/client/git_push.sh"
- echo "4/4 composer install(Guzzle)"
- (cd "$ROOT/api-test/client" && COMPOSER_CACHE_DIR="$COMPOSER_CACHE" composer install --no-dev --no-interaction --no-progress)
- echo "完成。运行:php api-test/run.php --server=local"
|