generate-phpdoc.sh 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/usr/bin/env bash
  2. set -e
  3. # parameters
  4. PHPDOC_CONFIG="$1" # phpDoc config file
  5. PHPDOC_CACHE_DIR="$2" # phpDoc cache dir
  6. PHPDOC_TARGET_DIR="$3" # phpDoc output dir
  7. PHPDOC_TITLE="$4" # API docs title
  8. # print parameters
  9. echo "Generating phpDocs..."
  10. printf 'PHPDOC_CONFIG="%s"\n' "$PHPDOC_CONFIG"
  11. printf 'PHPDOC_CACHE_DIR="%s"\n' "$PHPDOC_CACHE_DIR"
  12. printf 'PHPDOC_TARGET_DIR="%s"\n' "$PHPDOC_TARGET_DIR"
  13. printf 'PHPDOC_TITLE="%s"\n' "$PHPDOC_TITLE"
  14. echo
  15. # update a separate phpDoc cache
  16. if [ "$PHPDOC_CACHE_DIR" != "-" ]; then
  17. # parse phpDoc files (i.e. update cache)
  18. printf "\nUpdate phpDoc cache...\n"
  19. phpdoc project:parse --config "$PHPDOC_CONFIG" \
  20. --target "$PHPDOC_CACHE_DIR"
  21. # check for changes
  22. printf '\nCheck for phpDoc cache changes...\n'
  23. if [ -z "$(git status --porcelain "$PHPDOC_CACHE_DIR")" ]; then
  24. printf 'No changes detected; skipping phpDocs renewal...\n\n'
  25. exit 0
  26. fi
  27. # NOTE: actually the following command should be `phpdoc project:transform`
  28. # instead of `phpdoc project:run`, but the command seems to be broken...
  29. else
  30. # create temporary cache files in PHPDOC_TARGET_DIR
  31. PHPDOC_CACHE_DIR="$PHPDOC_TARGET_DIR"
  32. fi
  33. # transform phpDoc files (i.e. rewrite API docs)
  34. printf '\nRewrite phpDocs...\n'
  35. rm -rf "$PHPDOC_TARGET_DIR"
  36. phpdoc project:run --config "$PHPDOC_CONFIG" \
  37. --cache-folder "$PHPDOC_CACHE_DIR" \
  38. --target "$PHPDOC_TARGET_DIR" \
  39. --title "$PHPDOC_TITLE"
  40. echo