release-all.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/usr/bin/env bash
  2. REL_SCRIPT_DIR="`dirname \"$0\"`"
  3. SCRIPT_DIR="`( cd \"$REL_SCRIPT_DIR\" && pwd )`"
  4. case "$OSTYPE" in
  5. darwin*) PLATFORM="OSX" ;;
  6. linux*) PLATFORM="LINUX" ;;
  7. bsd*) PLATFORM="BSD" ;;
  8. *) PLATFORM="UNKNOWN" ;;
  9. esac
  10. generate_changelog()
  11. {
  12. $SCRIPT_DIR/generate-changelog.sh beautify-web/js-beautify || exit 1
  13. git commit -am "Update Changelog for $NEW_VERSION"
  14. }
  15. release_python()
  16. {
  17. git clean -xfd || exit 1
  18. echo "__version__ = '$NEW_VERSION'" > python/jsbeautifier/__version__.py
  19. git commit -am "Python $NEW_VERSION"
  20. cd python
  21. python setup.py register -r pypi
  22. python setup.py sdist upload -r pypi
  23. git push
  24. }
  25. release_node()
  26. {
  27. git clean -xfd || exit 1
  28. npm version $NEW_VERSION
  29. npm publish .
  30. git push
  31. git push --tags
  32. }
  33. release_web()
  34. {
  35. local ORIGINAL_BRANCH
  36. ORIGINAL_BRANCH=$(git branch | grep '[*] .*' | awk '{print $2}')
  37. git clean -xfd || exit 1
  38. git fetch || exit 1
  39. git checkout -B gh-pages origin/gh-pages || exit 1
  40. git merge origin/master && git push || exit 1
  41. git checkout $ORIGINAL_BRANCH
  42. }
  43. sedi() {
  44. if [[ "$PLATFORM" == "OSX" || "$PLATFORM" == "BSD" ]]; then
  45. sed -i "" $@
  46. elif [ "$PLATFORM" == "LINUX" ]; then
  47. sed -i $@
  48. else
  49. exit 1
  50. fi
  51. }
  52. update_readme_versions()
  53. {
  54. git clean -xfd || exit 1
  55. sedi -E 's@(cdn.rawgit.+beautify/v)[^/]+@\1'$NEW_VERSION'@' README.md
  56. sedi -E 's@(cdnjs.cloudflare.+beautify/)[^/]+@\1'$NEW_VERSION'@' README.md
  57. sedi -E 's/\((README\.md:.js-beautify@).+\)/(\1'$NEW_VERSION')/' README.md
  58. git add README.md
  59. git commit -m "Bump version numbers in README.md"
  60. }
  61. main()
  62. {
  63. cd $SCRIPT_DIR/..
  64. local NEW_VERSION=$1
  65. NEW_VERSION=$1
  66. git checkout master
  67. generate_changelog
  68. update_readme_versions
  69. (release_python)
  70. release_node
  71. release_web
  72. }
  73. (main $*)