From 40a08fa1d3c4f2fa8a9617203c4e43322b4d9941 Mon Sep 17 00:00:00 2001 From: Conrad Chan Date: Wed, 10 Feb 2021 15:33:07 -0800 Subject: [PATCH] chore: consolidated to single upgrade script --- build/upgrade_dependency.sh | 243 +++++++++++++++++++++++++++++++++++ build/upgrade_highlightjs.sh | 76 ----------- build/upgrade_papaparse.sh | 63 --------- build/upgrade_remarkable.sh | 68 ---------- build/upgrade_utils.sh | 37 ------ package.json | 4 +- 6 files changed, 244 insertions(+), 247 deletions(-) create mode 100755 build/upgrade_dependency.sh delete mode 100755 build/upgrade_highlightjs.sh delete mode 100755 build/upgrade_papaparse.sh delete mode 100755 build/upgrade_remarkable.sh delete mode 100644 build/upgrade_utils.sh diff --git a/build/upgrade_dependency.sh b/build/upgrade_dependency.sh new file mode 100755 index 000000000..7b55b6f2d --- /dev/null +++ b/build/upgrade_dependency.sh @@ -0,0 +1,243 @@ +#!/bin/bash +# Run with specific depdnency and branch/tag (e.g. ./upgrade_dependency.sh [highlightjs|remarkable|papaparse] 10.6.0) or with no branch/tag argument to use master + +BASE_PATH="src/third-party/text" +DEPENDENCY=${1} +STATIC_ASSETS_BRANCH=${2:-master} +STATIC_ASSETS_VERSION=$(./build/current_version.sh) +STATIC_ASSETS_PATH="${BASE_PATH}/${STATIC_ASSETS_VERSION}" + +build_custom_highlightjs() { + # TODO: This list of languages should be made more dynamic based on the file extensions Preview supports, see src/lib/extensions.js + HIGHLIGHTJS_LANGUAGES="actionscript dos c cpp cmake csharp css diff erb groovy haml java javascript json less makefile ocaml php perl properties python ruby scss scala sml sql bash vim yaml" + + echo "-----------------------------------------------------------------------------------" + echo "Cloning higlightjs repo at branch: $STATIC_ASSETS_BRANCH..." + echo "-----------------------------------------------------------------------------------" + rm -rf highlightjs + git clone git@github.com:highlightjs/highlight.js.git --depth 1 --single-branch --branch ${STATIC_ASSETS_BRANCH} highlightjs || return 1 + + echo "-----------------------------------------------------------------------------------" + echo "Building higlightjs for browser for languages ${HIGHLIGHTJS_LANGUAGES}..." + echo "-----------------------------------------------------------------------------------" + # Use subshell to execute the custom build to avoid having to keep track of the current working directory + (cd highlightjs && yarn install --frozen-lockfile && node tools/build -t browser ${HIGHLIGHTJS_LANGUAGES}) || return 1 +} + +build_papaparse() { + echo "-----------------------------------------------------------------------------------" + echo "Cloning papaparse repo at branch: $STATIC_ASSETS_BRANCH..." + echo "-----------------------------------------------------------------------------------" + rm -rf papaparse + git clone git@github.com:mholt/PapaParse.git --depth 1 --single-branch --branch ${STATIC_ASSETS_BRANCH} || return 1 +} + +build_remarkable() { + echo "-----------------------------------------------------------------------------------" + echo "Cloning remarkable repo at branch: $STATIC_ASSETS_BRANCH..." + echo "-----------------------------------------------------------------------------------" + rm -rf remarkable + git clone git@github.com:jonschlinkert/remarkable.git --depth 1 --single-branch --branch ${STATIC_ASSETS_BRANCH} || return 1 + + echo "-----------------------------------------------------------------------------------" + echo "Building remarkable..." + echo "-----------------------------------------------------------------------------------" + # Use subshell to execute the custom build to avoid having to keep track of the current working directory + (cd remarkable && yarn install --frozen-lockfile && yarn build) || return 1 +} + +# bump_manifest_version +# where libname is the name of the third-party dependency in the manifest.json +bump_manifest_version() { + echo "-----------------------------------------------------------------------------------" + echo "Bumping $1 version in manifest.json" + echo "-----------------------------------------------------------------------------------" + VERSION=$(cd $1 && ../build/current_version.sh) || return 1 + + echo "Bumping $1 version to $VERSION" + node build/updateManifest.js ${STATIC_ASSETS_VERSION} $1 $VERSION ${STATIC_ASSETS_PATH}/manifest.json || return 1 +} + +# cleanup_repo +cleanup_repo() { + if [ -z $1 ]; then + echo "-----------------------------------------------------------------------------------" + echo "No folder specified to clean up" + echo "-----------------------------------------------------------------------------------" + exit 1 + fi + + echo "-----------------------------------------------------------------------------------" + echo "Cleaning up $1 repo" + echo "-----------------------------------------------------------------------------------" + rm -rf $1 +} + +validate_dependency() { + if [ -z "$DEPENDENCY" ]; then + echo "ERROR: Dependency is required [highlightjs|remarkable|papaparse]" + echo "Usage: ./upgrade_dependency.sh [highlightjs|remarkable|papaparse] " + exit 1 + elif [ "$DEPENDENCY" != "highlightjs" ] && [ "$DEPENDENCY" != "remarkable" ] && [ "$DEPENDENCY" != "papaparse" ]; then + echo "ERROR: Provided dependency \"$DEPENDENCY\" is not valid" + exit 1 + fi +} + +perform_upgrade() { + case "$DEPENDENCY" in + highlightjs) + upgrade_highlightjs || return 1 + ;; + remarkable) + upgrade_remarkable || return 1 + ;; + papaparse) + upgrade_papaparse || return 1 + ;; + esac +} + +prepare_target_directory() { + if [ ! -d $STATIC_ASSETS_PATH ] + then + echo "-----------------------------------------------------------------------------------" + echo "Creating target directory at $STATIC_ASSETS_PATH..." + echo "-----------------------------------------------------------------------------------" + + CURRENT_ASSETS_VERSIONS=`ls ${BASE_PATH} | sort -t "." -k1,1n -k2,2n -k3,3n | tail -1` + + echo "Using base version from $CURRENT_ASSETS_VERSIONS" + mkdir -v ${STATIC_ASSETS_PATH} + cp -pv ${BASE_PATH}/${CURRENT_ASSETS_VERSIONS}/* ${STATIC_ASSETS_PATH}/ + else + echo "-----------------------------------------------------------------------------------" + echo "Directory already exists at $STATIC_ASSETS_PATH, using it as is..." + echo "-----------------------------------------------------------------------------------" + fi +} + +process_highlightjs_assets() { + HIGHLIGHTJS_DIST="highlight.pack.js" # v10+ the dist file becomes highlight.min.js + + echo "-----------------------------------------------------------------------------------" + echo "Copying relevant files to third-party directory..." + echo "-----------------------------------------------------------------------------------" + cp -v highlightjs/build/${HIGHLIGHTJS_DIST} ${STATIC_ASSETS_PATH}/highlight.min.js || return 1 + cp -v highlightjs/src/styles/github.css ${STATIC_ASSETS_PATH} || return 1 + + echo "-----------------------------------------------------------------------------------" + echo "Minifying github.css with cssnano" + echo "-----------------------------------------------------------------------------------" + ./node_modules/.bin/cssnano ${STATIC_ASSETS_PATH}/github.css ${STATIC_ASSETS_PATH}/github.min.css || return 1 +} + +process_papaparse_assets() { + echo "-----------------------------------------------------------------------------------" + echo "Copying relevant files to third-party directory..." + echo "-----------------------------------------------------------------------------------" + cp -v papaparse/papaparse.js ${STATIC_ASSETS_PATH} || return 1 + cp -v papaparse/papaparse.min.js ${STATIC_ASSETS_PATH} || return 1 +} + +process_remarkable_assets() { + REMARKABLE_DIST="remarkable.min.js" + + echo "-----------------------------------------------------------------------------------" + echo "Copying relevant files to third-party directory..." + echo "-----------------------------------------------------------------------------------" + cp -v remarkable/dist/${REMARKABLE_DIST} ${STATIC_ASSETS_PATH} || return 1 +} + +upgrade_dependency() { + echo "-----------------------------------------------------------------------------------" + echo "Beginning upgrade for $DEPENDENCY! 🚧" + echo "-----------------------------------------------------------------------------------" + + # Validate which dependency is being upgraded + validate_dependency || return 1 + + # Prepare target directory under third-party/text + prepare_target_directory || return 1 + + # Perform the upgrade for the specified dependency + perform_upgrade || return 1 +} + +upgrade_highlightjs() { + echo "-----------------------------------------------------------------------------------" + echo "Upgrading highlight.js to $STATIC_ASSETS_BRANCH" + echo "-----------------------------------------------------------------------------------" + + # Build highlightjs from the specified version + build_custom_highlightjs || return 1 + + # Copy over built assets to target directory + process_highlightjs_assets || return 1 + + # Bump highlightjs version in manifest.json + bump_manifest_version highlightjs || return 1 + + # Cleanup highlightjs + cleanup_repo highlightjs || return 1 + + echo "-----------------------------------------------------------------------------------" + echo "Successfully upgraded highlightjs! 🚀" + echo "-----------------------------------------------------------------------------------" +} + +upgrade_papaparse() { + echo "-----------------------------------------------------------------------------------" + echo "Upgrading papaparse to $STATIC_ASSETS_BRANCH" + echo "-----------------------------------------------------------------------------------" + + # Clone papaparse from the specified version + build_papaparse || return 1 + + # Copy over built assets to target directory + process_papaparse_assets || return 1 + + # Bump papaparse version in manifest.json + bump_manifest_version papaparse || return 1 + + # Cleanup papaparse + cleanup_repo papaparse || return 1 + + echo "-----------------------------------------------------------------------------------" + echo "Successfully upgraded papaparse! 🚀" + echo "-----------------------------------------------------------------------------------" +} + +upgrade_remarkable() { + echo "-----------------------------------------------------------------------------------" + echo "Upgrading remarkable to $STATIC_ASSETS_BRANCH" + echo "-----------------------------------------------------------------------------------" + + # Build remarkable from the specified version + build_remarkable || return 1 + + # Copy over built assets to target directory + process_remarkable_assets || return 1 + + # Bump remarkable version in manifest.json + bump_manifest_version remarkable || return 1 + + # Cleanup remarkable + cleanup_repo remarkable || return 1 + + echo "-----------------------------------------------------------------------------------" + echo "Successfully upgraded remarkable! 🚀" + echo "-----------------------------------------------------------------------------------" +} + +# Execute this entire script +if ! upgrade_dependency; then + echo "----------------------------------------------------------------------" + echo "Error while upgrading $DEPENDENCY to latest version!" + echo "----------------------------------------------------------------------" + + echo "----------------------------------------------------------------------" + echo "Clean workspace by deleting ${STATIC_ASSETS_PATH} and any cloned repo directory" + echo "----------------------------------------------------------------------" + exit 1 +fi diff --git a/build/upgrade_highlightjs.sh b/build/upgrade_highlightjs.sh deleted file mode 100755 index 7702baff9..000000000 --- a/build/upgrade_highlightjs.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -# Run with specific branch/tag (e.g. ./upgrade_highlightjs.sh 10.6.0) or with no arguments to use master - -# TODO: This list of languages should be made more dynamic based on the file extensions Preview supports, see src/lib/extensions.js -HIGHLIGHTJS_DIST="highlight.pack.js" -HIGHLIGHTJS_LANGUAGES="actionscript dos c cpp cmake csharp css diff erb groovy haml java javascript json less makefile ocaml php perl properties python ruby scss scala sml sql bash vim yaml" -REPO_SRC_DIR="highlightjs" -REPO_URL="git@github.com:highlightjs/highlight.js.git" -BASE_PATH="src/third-party/text" -STATIC_ASSETS_BRANCH=${1:-master} -STATIC_ASSETS_VERSION=$(./build/current_version.sh) -STATIC_ASSETS_PATH="${BASE_PATH}/${STATIC_ASSETS_VERSION}" - -source build/upgrade_utils.sh - -build_custom_highlightjs() { - echo "-----------------------------------------------------------------------------------" - echo "Cloning higlightjs repo at branch: $STATIC_ASSETS_BRANCH..." - echo "-----------------------------------------------------------------------------------" - rm -rf ${REPO_SRC_DIR} - git clone ${REPO_URL} --depth 1 --single-branch --branch ${STATIC_ASSETS_BRANCH} ${REPO_SRC_DIR} || return 1 - - echo "-----------------------------------------------------------------------------------" - echo "Building higlightjs for browser for languages ${HIGHLIGHTJS_LANGUAGES}..." - echo "-----------------------------------------------------------------------------------" - # Use subshell to execute the custom build to avoid having to keep track of the current working directory - (cd ${REPO_SRC_DIR} && yarn install --frozen-lockfile && node tools/build -t browser ${HIGHLIGHTJS_LANGUAGES}) || return 1 -} - -process_highlightjs_assets() { - echo "-----------------------------------------------------------------------------------" - echo "Copying relevant files to third-party directory..." - echo "-----------------------------------------------------------------------------------" - cp -v ${REPO_SRC_DIR}/build/${HIGHLIGHTJS_DIST} ${STATIC_ASSETS_PATH}/highlight.min.js || return 1 - cp -v ${REPO_SRC_DIR}/src/styles/github.css ${STATIC_ASSETS_PATH} || return 1 - - echo "-----------------------------------------------------------------------------------" - echo "Minifying github.css with cssnano" - echo "-----------------------------------------------------------------------------------" - ./node_modules/.bin/cssnano ${STATIC_ASSETS_PATH}/github.css ${STATIC_ASSETS_PATH}/github.min.css || return 1 -} - -upgrade_highlightjs() { - echo "Upgrading highlight.js to $STATIC_ASSETS_BRANCH"; - - # Prepare target directory under third-party/text - prepare_target_directory || return 1 - - # Build highlightjs from the specified version - build_custom_highlightjs || return 1 - - # Copy over built assets to target directory - process_highlightjs_assets || return 1 - - # Bump highlightjs version in manifest.json - bump_manifest_version || return 1 - - # Cleanup highlightjs - cleanup_repo || return 1 - - echo "-----------------------------------------------------------------------------------" - echo "Successfully upgraded highlightjs! 🚀" - echo "-----------------------------------------------------------------------------------" -} - -# Execute this entire script -if ! upgrade_highlightjs; then - echo "----------------------------------------------------------------------" - echo "Error while upgrading highlightjs to latest version!" - echo "----------------------------------------------------------------------" - - echo "----------------------------------------------------------------------" - echo "Clean workspace by deleting ${STATIC_ASSETS_PATH} and ${REPO_SRC_DIR}" - echo "----------------------------------------------------------------------" - exit 1 -fi diff --git a/build/upgrade_papaparse.sh b/build/upgrade_papaparse.sh deleted file mode 100755 index 1601d8ac9..000000000 --- a/build/upgrade_papaparse.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -# Run with specific branch/tag (e.g. ./upgrade_papaparse.sh 5.3.0) or with no arguments to use master - -REMARKABLE_DIST="papaparse.min.js" -REPO_SRC_DIR="papaparse" -REPO_URL="git@github.com:mholt/PapaParse.git" -BASE_PATH="src/third-party/text" -STATIC_ASSETS_BRANCH=${1:-master} -STATIC_ASSETS_VERSION=$(./build/current_version.sh) -STATIC_ASSETS_PATH="${BASE_PATH}/${STATIC_ASSETS_VERSION}" - -source build/upgrade_utils.sh - -clone_repo() { - echo "-----------------------------------------------------------------------------------" - echo "Cloning papaparse repo at branch: $STATIC_ASSETS_BRANCH..." - echo "-----------------------------------------------------------------------------------" - rm -rf ${REPO_SRC_DIR} - git clone ${REPO_URL} --depth 1 --single-branch --branch ${STATIC_ASSETS_BRANCH} ${REPO_SRC_DIR} || return 1 -} - -process_papaparse_assets() { - echo "-----------------------------------------------------------------------------------" - echo "Copying relevant files to third-party directory..." - echo "-----------------------------------------------------------------------------------" - cp -v ${REPO_SRC_DIR}/papaparse.js ${STATIC_ASSETS_PATH} || return 1 - cp -v ${REPO_SRC_DIR}/papaparse.min.js ${STATIC_ASSETS_PATH} || return 1 -} - -upgrade_papaparse() { - echo "Upgrading papaparse to $STATIC_ASSETS_BRANCH"; - - # Prepare target directory under third-party/text - prepare_target_directory || return 1 - - # Clone papaparse from the specified version - clone_repo || return 1 - - # Copy over built assets to target directory - process_papaparse_assets || return 1 - - # Bump papaparse version in manifest.json - bump_manifest_version || return 1 - - # Cleanup papaparse - cleanup_repo || return 1 - - echo "-----------------------------------------------------------------------------------" - echo "Successfully upgraded papaparse! 🚀" - echo "-----------------------------------------------------------------------------------" -} - -# Execute this entire script -if ! upgrade_papaparse; then - echo "----------------------------------------------------------------------" - echo "Error while upgrading papaparse to latest version!" - echo "----------------------------------------------------------------------" - - echo "----------------------------------------------------------------------" - echo "Clean workspace by deleting ${STATIC_ASSETS_PATH} and ${REPO_SRC_DIR}" - echo "----------------------------------------------------------------------" - exit 1 -fi diff --git a/build/upgrade_remarkable.sh b/build/upgrade_remarkable.sh deleted file mode 100755 index f256db8f8..000000000 --- a/build/upgrade_remarkable.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash -# Run with specific branch/tag (e.g. ./upgrade_remarkable.sh 2.0.1) or with no arguments to use master - -REMARKABLE_DIST="remarkable.min.js" -REPO_SRC_DIR="remarkable" -REPO_URL="git@github.com:jonschlinkert/remarkable.git" -BASE_PATH="src/third-party/text" -STATIC_ASSETS_BRANCH=${1:-master} -STATIC_ASSETS_VERSION=$(./build/current_version.sh) -STATIC_ASSETS_PATH="${BASE_PATH}/${STATIC_ASSETS_VERSION}" - -source build/upgrade_utils.sh - -build_remarkable() { - echo "-----------------------------------------------------------------------------------" - echo "Cloning remarkable repo at branch: $STATIC_ASSETS_BRANCH..." - echo "-----------------------------------------------------------------------------------" - rm -rf ${REPO_SRC_DIR} - git clone ${REPO_URL} --depth 1 --single-branch --branch ${STATIC_ASSETS_BRANCH} ${REPO_SRC_DIR} || return 1 - - echo "-----------------------------------------------------------------------------------" - echo "Building remarkable..." - echo "-----------------------------------------------------------------------------------" - # Use subshell to execute the custom build to avoid having to keep track of the current working directory - (cd ${REPO_SRC_DIR} && yarn install --frozen-lockfile && yarn build) || return 1 -} - -process_remarkable_assets() { - echo "-----------------------------------------------------------------------------------" - echo "Copying relevant files to third-party directory..." - echo "-----------------------------------------------------------------------------------" - cp -v ${REPO_SRC_DIR}/dist/${REMARKABLE_DIST} ${STATIC_ASSETS_PATH} || return 1 -} - -upgrade_remarkable() { - echo "Upgrading remarkable to $STATIC_ASSETS_BRANCH"; - - # Prepare target directory under third-party/text - prepare_target_directory || return 1 - - # Build remarkable from the specified version - build_remarkable || return 1 - - # Copy over built assets to target directory - process_remarkable_assets || return 1 - - # Bump remarkable version in manifest.json - bump_manifest_version || return 1 - - # Cleanup remarkable - cleanup_repo || return 1 - - echo "-----------------------------------------------------------------------------------" - echo "Successfully upgraded remarkable! 🚀" - echo "-----------------------------------------------------------------------------------" -} - -# Execute this entire script -if ! upgrade_remarkable; then - echo "----------------------------------------------------------------------" - echo "Error while upgrading remarkable to latest version!" - echo "----------------------------------------------------------------------" - - echo "----------------------------------------------------------------------" - echo "Clean workspace by deleting ${STATIC_ASSETS_PATH} and ${REPO_SRC_DIR}" - echo "----------------------------------------------------------------------" - exit 1 -fi diff --git a/build/upgrade_utils.sh b/build/upgrade_utils.sh deleted file mode 100644 index e3d3b735c..000000000 --- a/build/upgrade_utils.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -bump_manifest_version() { - echo "-----------------------------------------------------------------------------------" - echo "Bumping $REPO_SRC_DIR version in manifest.json" - echo "-----------------------------------------------------------------------------------" - VERSION=$(cd $REPO_SRC_DIR && ../build/current_version.sh) || return 1 - - echo "Bumping $REPO_SRC_DIR version to ${VERSION}" - node build/updateManifest.js ${STATIC_ASSETS_VERSION} ${REPO_SRC_DIR} ${VERSION} ${STATIC_ASSETS_PATH}/manifest.json || return 1 -} - -cleanup_repo() { - echo "-----------------------------------------------------------------------------------" - echo "Cleaning up $REPO_SRC_DIR repo" - echo "-----------------------------------------------------------------------------------" - rm -rf ${REPO_SRC_DIR} -} - -prepare_target_directory() { - if [ ! -d $STATIC_ASSETS_PATH ] - then - echo "-----------------------------------------------------------------------------------" - echo "Creating target directory at $STATIC_ASSETS_PATH..." - echo "-----------------------------------------------------------------------------------" - - CURRENT_ASSETS_VERSIONS=`ls ${BASE_PATH} | sort -t "." -k1,1n -k2,2n -k3,3n | tail -1` - - echo "Using base version from $CURRENT_ASSETS_VERSIONS" - mkdir -v ${STATIC_ASSETS_PATH} - cp -pv ${BASE_PATH}/${CURRENT_ASSETS_VERSIONS}/* ${STATIC_ASSETS_PATH}/ - else - echo "-----------------------------------------------------------------------------------" - echo "Directory already exists at $STATIC_ASSETS_PATH, using it as is..." - echo "-----------------------------------------------------------------------------------" - fi -} diff --git a/package.json b/package.json index b088f4313..e2f3ad147 100644 --- a/package.json +++ b/package.json @@ -137,10 +137,8 @@ "test:e2e:open": "npm-run-all -p -r start:dev cy:open", "test:watch": "yarn test --watch", "upgrade:annotations": "./build/upgrade_annotations.sh", - "upgrade:highlightjs": "./build/upgrade_highlightjs.sh", - "upgrade:papaparse": "./build/upgrade_papaparse.sh", "upgrade:pdfjs": "./build/upgrade_pdfjs.sh", - "upgrade:remarkable": "./build/upgrade_remarkable.sh" + "upgrade:viewers:text": "./build/upgrade_dependency.sh" }, "browserslist": [ "last 2 Chrome versions",