deploy-dotorg.sh 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #!/bin/bash
  2. # Make sure SVN credentials and project slug are set
  3. if [[ -z "$SVN_USERNAME" ]] && [[ $1 != "preview" ]]; then
  4. echo "Set the SVN_USERNAME secret"
  5. exit 1
  6. fi
  7. if [[ -z "$SVN_PASSWORD" ]] && [[ $1 != "preview" ]]; then
  8. echo "Set the SVN_PASSWORD secret"
  9. exit 1
  10. fi
  11. rm -rf ./deploy
  12. # Look into all the themes we expect to deploy
  13. declare -a THEMES_TO_DEPLOY=(
  14. "adventurer"
  15. "archeo"
  16. "bibimbap"
  17. "bitacora"
  18. "blockbase"
  19. "course"
  20. "ctlg"
  21. "disco"
  22. "geologist"
  23. "george-lois"
  24. "hey"
  25. "lettre"
  26. "lineup"
  27. "livro"
  28. "mayland-blocks"
  29. "paimio"
  30. "pendant"
  31. "pixl"
  32. "poema"
  33. "quadrat"
  34. "rainfall"
  35. "remote"
  36. "seedlet-blocks"
  37. "skatepark"
  38. "stewart"
  39. "storia"
  40. "upsidedown"
  41. "vivre"
  42. "zoologist"
  43. )
  44. for THEME_SLUG in ${THEMES_TO_DEPLOY[@]} ; do
  45. THEME_VERSION=$(cat ./${THEME_SLUG}/style.css \
  46. | grep Version \
  47. | head -1 \
  48. | awk -F: '{ print $2 }' \
  49. | sed 's/[",]//g' \
  50. | sed 's/-wpcom//g' \
  51. | tr -d '[[:space:]]')
  52. # TODO: This does take into account the -wpcom appended to some theme versions.
  53. # Ideally that can be removed from all of the themes versioning in this repository.
  54. # I'm not convinced it's helpful...
  55. printf "\n\nAttempting to deploy theme ${THEME_SLUG} version ${THEME_VERSION}\n"
  56. SVN_URL="https://themes.svn.wordpress.org/${THEME_SLUG}/"
  57. SVN_DIR="$PWD/deploy/${THEME_SLUG}"
  58. svn checkout --depth immediates "$SVN_URL" "$SVN_DIR" --no-auth-cache --non-interactive > /dev/null
  59. if [ ! -d "$SVN_DIR" ]; then
  60. echo "No theme by that slug to be checked out. Probably not a theme. Moving on."
  61. continue;
  62. fi
  63. if [ -d "$SVN_DIR/$THEME_VERSION" ]; then
  64. rm -rf $SVN_DIR
  65. echo "Release already exists. Moving on."
  66. continue;
  67. fi
  68. directories=($SVN_DIR/*)
  69. last_directory=${directories[${#directories[@]}-1]}
  70. echo "➤ Copying previous version of theme '${THEME_SLUG}' to svn repository... "
  71. svn update --set-depth infinity ${last_directory} --non-interactive
  72. svn cp ${last_directory} $SVN_DIR/$THEME_VERSION
  73. echo "➤ Copying theme '${THEME_SLUG}' version '${THEME_VERSION}' to svn repository... "
  74. rsync -rc --delete --include=theme.json --exclude-from './dotorg-exclude.txt' ./$THEME_SLUG/ $SVN_DIR/$THEME_VERSION
  75. # Remove the wpcom-specific tags used in some themes
  76. find $SVN_DIR/$THEME_VERSION/style.css -type f -exec sed -i '' 's/, auto-loading-homepage//g' {} \;
  77. # Remove files from the previous version
  78. svn status $SVN_DIR/$THEME_VERSION | grep "^\!" | sed 's/^\! *//g' | xargs svn rm;
  79. # Add the version to SVN
  80. svn add $SVN_DIR/$THEME_VERSION --force --depth infinity -q > /dev/null
  81. if [[ $1 == "preview" ]]; then
  82. svn status $SVN_DIR
  83. else
  84. echo "➤ Committing files..."
  85. svn commit $SVN_DIR -m "Update to version ${THEME_VERSION} from GitHub" --no-auth-cache --non-interactive --username ${SVN_USERNAME} --password ${SVN_PASSWORD} 2>&1 | grep 'svn: E'
  86. if [[ $? -eq 0 ]]; then
  87. echo 'Commit failed.'
  88. exit 1
  89. fi
  90. fi
  91. done