release.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/bin/bash
  2. set -e
  3. echo -n "Enter the version for this release: "
  4. read ver
  5. if [ ! $ver ]; then
  6. echo "Invalid version."
  7. exit
  8. fi
  9. name="select2"
  10. js="$name.js"
  11. mini="$name.min.js"
  12. css="$name.css"
  13. release="$name-$ver"
  14. releasedir="/tmp/$release"
  15. tag="release-$ver"
  16. branch="build-$ver"
  17. curbranch=`git branch | grep "*" | sed "s/* //"`
  18. timestamp=$(date)
  19. tokens="s/@@ver@@/$ver/g;s/\@@timestamp@@/$timestamp/g"
  20. remote="github"
  21. git branch "$branch"
  22. git checkout "$branch"
  23. echo "Tokenizing..."
  24. find . -name "$js" | xargs sed -i -e "$tokens"
  25. find . -name "$css" | xargs sed -i -e "$tokens"
  26. git add "$js"
  27. git add "$css"
  28. echo "Minifying..."
  29. echo "/*" > "$mini"
  30. cat LICENSE | sed "$tokens" >> "$mini"
  31. echo "*/" >> "$mini"
  32. curl -s \
  33. -d compilation_level=SIMPLE_OPTIMIZATIONS \
  34. -d output_format=text \
  35. -d output_info=compiled_code \
  36. --data-urlencode "js_code@$js" \
  37. http://closure-compiler.appspot.com/compile \
  38. >> "$mini"
  39. git add "$mini"
  40. git commit -m "release $ver"
  41. echo "Tagging..."
  42. git tag -a "$tag" -m "tagged version $ver"
  43. git push "$remote" --tags
  44. echo "Archiving..."
  45. rm -rf "$releasedir"
  46. mkdir "$releasedir"
  47. cp $name.* "$releasedir"
  48. cp spinner.gif "$releasedir"
  49. cp README.* "$releasedir"
  50. zip -r "$releasedir.zip" "$releasedir"
  51. rm -rf "$releasedir"
  52. echo "Cleaning Up..."
  53. git checkout "$curbranch"
  54. git branch -D "$branch"
  55. echo "Done. Release archive created: $releasedir.zip"