regen.sh 2.4 KB

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