build.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/env bash
  2. set -e
  3. if [[ "$#" -ne 1 ]]; then
  4. echo "Usage:" >&2
  5. echo " $0 {version}" >&2
  6. exit 1
  7. fi
  8. version=$1
  9. builtcontent="./build/shlink_${version}_dist"
  10. projectdir=$(pwd)
  11. [[ -f ./composer.phar ]] && composerBin='./composer.phar' || composerBin='composer'
  12. # Copy project content to temp dir
  13. echo 'Copying project files...'
  14. rm -rf "${builtcontent}"
  15. mkdir -p "${builtcontent}"
  16. rsync -av * "${builtcontent}" \
  17. --exclude=bin/test \
  18. --exclude=data/infra \
  19. --exclude=data/cache/* \
  20. --exclude=data/log/* \
  21. --exclude=data/locks/* \
  22. --exclude=data/proxies/* \
  23. --exclude=data/migrations_template.txt \
  24. --exclude=data/GeoLite2-City.* \
  25. --exclude=data/database.sqlite \
  26. --exclude=data/shlink-tests.db \
  27. --exclude=**/.gitignore \
  28. --exclude=CHANGELOG.md \
  29. --exclude=composer.lock \
  30. --exclude=vendor \
  31. --exclude=docs \
  32. --exclude=*docker* \
  33. --exclude=php* \
  34. --exclude=infection.json \
  35. --exclude=phpstan.neon \
  36. --exclude=config/autoload/*local* \
  37. --exclude=config/test \
  38. --exclude=**/test* \
  39. --exclude=build* \
  40. --exclude=.github
  41. cd "${builtcontent}"
  42. # Install dependencies
  43. echo "Installing dependencies with $composerBin..."
  44. ${composerBin} self-update
  45. ${composerBin} install --no-dev --optimize-autoloader --apcu-autoloader --no-progress --no-interaction
  46. # Delete development files
  47. echo 'Deleting dev files...'
  48. rm composer.*
  49. # Update shlink version in config
  50. sed -i "s/%SHLINK_VERSION%/${version}/g" config/autoload/app_options.global.php
  51. # Compressing file
  52. echo 'Compressing files...'
  53. cd "${projectdir}"/build
  54. rm -f ./shlink_${version}_dist.zip
  55. zip -ry ./shlink_${version}_dist.zip ./shlink_${version}_dist
  56. cd "${projectdir}"
  57. rm -rf "${builtcontent}"
  58. echo 'Done!'