update-oojs-ui.sh 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/bin/bash -eu
  2. # This script generates a commit that updates our copy of OOjs UI
  3. if [ -n "${2:-}" ]
  4. then
  5. # Too many parameters
  6. echo >&2 "Usage: $0 [<version>]"
  7. exit 1
  8. fi
  9. REPO_DIR=$(cd "$(dirname $0)/../.."; pwd) # Root dir of the git repo working tree
  10. TARGET_DIR="resources/lib/oojs-ui" # Destination relative to the root of the repo
  11. NPM_DIR=$(mktemp -d 2>/dev/null || mktemp -d -t 'update-oojs-ui') # e.g. /tmp/update-oojs-ui.rI0I5Vir
  12. # Prepare working tree
  13. cd "$REPO_DIR"
  14. git reset composer.json
  15. git checkout composer.json
  16. git reset -- $TARGET_DIR
  17. git checkout -- $TARGET_DIR
  18. git fetch origin
  19. git checkout -B upstream-oojs-ui origin/master
  20. # Fetch upstream version
  21. cd $NPM_DIR
  22. if [ -n "${1:-}" ]
  23. then
  24. npm install "oojs-ui@$1"
  25. else
  26. npm install oojs-ui
  27. fi
  28. OOJSUI_VERSION=$(node -e 'console.log(require("./node_modules/oojs-ui/package.json").version);')
  29. if [ "$OOJSUI_VERSION" == "" ]
  30. then
  31. echo 'Could not find OOjs UI version'
  32. exit 1
  33. fi
  34. # Copy files, picking the necessary ones from source and distribution
  35. rm -r "$REPO_DIR/$TARGET_DIR"
  36. mkdir -p "$REPO_DIR/$TARGET_DIR/i18n"
  37. mkdir -p "$REPO_DIR/$TARGET_DIR/images"
  38. mkdir -p "$REPO_DIR/$TARGET_DIR/themes/mediawiki/images"
  39. mkdir -p "$REPO_DIR/$TARGET_DIR/themes/apex/images"
  40. cp ./node_modules/oojs-ui/dist/oojs-ui-core.js "$REPO_DIR/$TARGET_DIR"
  41. cp ./node_modules/oojs-ui/dist/oojs-ui-core-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR"
  42. cp ./node_modules/oojs-ui/dist/oojs-ui-widgets.js "$REPO_DIR/$TARGET_DIR"
  43. cp ./node_modules/oojs-ui/dist/oojs-ui-widgets-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR"
  44. cp ./node_modules/oojs-ui/dist/oojs-ui-toolbars.js "$REPO_DIR/$TARGET_DIR"
  45. cp ./node_modules/oojs-ui/dist/oojs-ui-toolbars-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR"
  46. cp ./node_modules/oojs-ui/dist/oojs-ui-windows.js "$REPO_DIR/$TARGET_DIR"
  47. cp ./node_modules/oojs-ui/dist/oojs-ui-windows-{mediawiki,apex}.css "$REPO_DIR/$TARGET_DIR"
  48. cp ./node_modules/oojs-ui/dist/oojs-ui-{mediawiki,apex}.js "$REPO_DIR/$TARGET_DIR"
  49. cp -R ./node_modules/oojs-ui/dist/i18n "$REPO_DIR/$TARGET_DIR"
  50. cp -R ./node_modules/oojs-ui/dist/images "$REPO_DIR/$TARGET_DIR"
  51. cp -R ./node_modules/oojs-ui/dist/themes/mediawiki/images "$REPO_DIR/$TARGET_DIR/themes/mediawiki"
  52. cp ./node_modules/oojs-ui/src/themes/mediawiki/*.json "$REPO_DIR/$TARGET_DIR/themes/mediawiki"
  53. cp -R ./node_modules/oojs-ui/dist/themes/apex/images "$REPO_DIR/$TARGET_DIR/themes/apex"
  54. cp ./node_modules/oojs-ui/src/themes/apex/*.json "$REPO_DIR/$TARGET_DIR/themes/apex"
  55. # Clean up temporary area
  56. rm -rf "$NPM_DIR"
  57. # Generate commit
  58. cd $REPO_DIR
  59. COMMITMSG=$(cat <<END
  60. Update OOjs UI to v$OOJSUI_VERSION
  61. Release notes:
  62. https://phabricator.wikimedia.org/diffusion/GOJU/browse/master/History.md;v$OOJSUI_VERSION
  63. END
  64. )
  65. # Update composer.json as well
  66. composer require oojs/oojs-ui $OOJSUI_VERSION --no-update
  67. # Stage deletion, modification and creation of files. Then commit.
  68. git add --update $TARGET_DIR
  69. git add $TARGET_DIR
  70. git add composer.json
  71. git commit -m "$COMMITMSG"