generate-phpdoc.sh 1.6 KB

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