#!/bin/bash # https://docs.sheetjs.com/docs/miscellany/contributing SHEETJS_VERSION="0.20.3" OS="$(uname -s)" case "$OS" in Linux) ;; *) echo "unsupported OS: $OS"; exit 1 ;; esac cd /tmp MISSING_PKGS="" for cmd in gcc make curl git unzip; do if ! command -v "$cmd" &> /dev/null; then case "$cmd" in gcc) MISSING_PKGS="$MISSING_PKGS build-essential" ;; *) MISSING_PKGS="$MISSING_PKGS $cmd" ;; esac fi done if [ -n "$MISSING_PKGS" ]; then echo "The following Debian/Ubuntu packages are missing: $MISSING_PKGS" # sudo apt-get update # sudo apt-get install -y $MISSING_PKGS exit 1 fi export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" if ! command -v nvm &> /dev/null; then curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash; fi if ! command -v node &> /dev/null; then nvm install --lts; fi nvm use --lts node --version if [ ! -e sheetjs ]; then if ! git clone https://git.sheetjs.com/sheetjs/sheetjs 2>&1; then git config --global http.sslVerify false git clone https://git.sheetjs.com/sheetjs/sheetjs 2>&1 git config --global http.sslVerify true fi fi cd sheetjs npm i npm i -g mocha@2.5.3 voc @sheetjs/uglify-js || sudo npm i -g mocha@2.5.3 voc @sheetjs/uglify-js rmdir test_files 2>/dev/null || rm -rf test_files curl -LO https://test-files.sheetjs.com/test_files.zip unzip -q test_files.zip mkdir -p tmp npx -y esbuild@0.14.14 --version cd modules; make clean; make; cd .. make make dist make test_misc for file in dist/xlsx.full.min.js xlsx.js xlsx.mjs; do if ! stat "$file" > /dev/null 2>&1; then echo "ERROR: $file not found"; exit 1; fi done git checkout -- . COMMIT_HASH=$(git log | grep -B4 "version bump $SHEETJS_VERSION" | head -1 | awk '{print $2}') if [ -z "$COMMIT_HASH" ]; then echo "ERROR: Could not find commit for version $SHEETJS_VERSION"; exit 1; fi echo "Version $SHEETJS_VERSION : Commit $COMMIT_HASH" git checkout "$COMMIT_HASH" make clean; make cd modules; make clean; make; cd .. make make dist LOCAL_MD5=$(md5sum dist/xlsx.full.min.js | awk '{print $1}') CDN_MD5=$(curl -L "https://cdn.sheetjs.com/xlsx-$SHEETJS_VERSION/package/dist/xlsx.full.min.js" | md5sum | awk '{print $1}') echo "Local MD5: $LOCAL_MD5" echo "CDN MD5: $CDN_MD5" if [ "$LOCAL_MD5" != "$CDN_MD5" ]; then echo "ERROR: MD5 checksums do not match!"; exit 1; fi git checkout master