1*9ff8d41cSJaap de Haan#!/usr/bin/env bash 2*9ff8d41cSJaap de Haanset -euo pipefail 3*9ff8d41cSJaap de Haan 4*9ff8d41cSJaap de Haan# Update vendor libraries (bpmn-js and dmn-js) from their release URLs. 5*9ff8d41cSJaap de Haan# Usage: ./update-vendor.sh 6*9ff8d41cSJaap de Haan 7*9ff8d41cSJaap de HaanSCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 8*9ff8d41cSJaap de HaanVENDOR_DIR="$SCRIPT_DIR/vendor" 9*9ff8d41cSJaap de HaanTMP_DIR=$(mktemp -d) 10*9ff8d41cSJaap de Haantrap 'rm -rf "$TMP_DIR"' EXIT 11*9ff8d41cSJaap de Haan 12*9ff8d41cSJaap de Haanupdate_library() { 13*9ff8d41cSJaap de Haan local name="$1" 14*9ff8d41cSJaap de Haan local url_file="$VENDOR_DIR/$name/url.txt" 15*9ff8d41cSJaap de Haan 16*9ff8d41cSJaap de Haan if [[ ! -f "$url_file" ]]; then 17*9ff8d41cSJaap de Haan echo "ERROR: $url_file not found" 18*9ff8d41cSJaap de Haan return 1 19*9ff8d41cSJaap de Haan fi 20*9ff8d41cSJaap de Haan 21*9ff8d41cSJaap de Haan local tarball_url 22*9ff8d41cSJaap de Haan tarball_url=$(head -1 "$url_file") 23*9ff8d41cSJaap de Haan 24*9ff8d41cSJaap de Haan echo "Updating $name from $tarball_url ..." 25*9ff8d41cSJaap de Haan 26*9ff8d41cSJaap de Haan local archive="$TMP_DIR/$name.tar.gz" 27*9ff8d41cSJaap de Haan curl -sL "$tarball_url" -o "$archive" 28*9ff8d41cSJaap de Haan 29*9ff8d41cSJaap de Haan local extract_dir="$TMP_DIR/$name-extract" 30*9ff8d41cSJaap de Haan mkdir -p "$extract_dir" 31*9ff8d41cSJaap de Haan tar xzf "$archive" -C "$extract_dir" 32*9ff8d41cSJaap de Haan 33*9ff8d41cSJaap de Haan # The archive extracts to a single directory like bpmn-js-18.3.1/ 34*9ff8d41cSJaap de Haan local src_dir 35*9ff8d41cSJaap de Haan src_dir=$(find "$extract_dir" -mindepth 1 -maxdepth 1 -type d | head -1) 36*9ff8d41cSJaap de Haan 37*9ff8d41cSJaap de Haan if [[ -z "$src_dir" ]]; then 38*9ff8d41cSJaap de Haan echo "ERROR: Could not find extracted directory for $name" 39*9ff8d41cSJaap de Haan return 1 40*9ff8d41cSJaap de Haan fi 41*9ff8d41cSJaap de Haan 42*9ff8d41cSJaap de Haan local dest="$VENDOR_DIR/$name" 43*9ff8d41cSJaap de Haan # Preserve url.txt 44*9ff8d41cSJaap de Haan local url_backup="$TMP_DIR/${name}_url.txt" 45*9ff8d41cSJaap de Haan cp "$dest/url.txt" "$url_backup" 46*9ff8d41cSJaap de Haan 47*9ff8d41cSJaap de Haan # Replace vendor directory contents 48*9ff8d41cSJaap de Haan rm -rf "$dest" 49*9ff8d41cSJaap de Haan cp -r "$src_dir" "$dest" 50*9ff8d41cSJaap de Haan cp "$url_backup" "$dest/url.txt" 51*9ff8d41cSJaap de Haan 52*9ff8d41cSJaap de Haan echo "Updated $name successfully." 53*9ff8d41cSJaap de Haan} 54*9ff8d41cSJaap de Haan 55*9ff8d41cSJaap de Haanupdate_library "bpmn-js" 56*9ff8d41cSJaap de Haanupdate_library "dmn-js" 57*9ff8d41cSJaap de Haan 58*9ff8d41cSJaap de Haanecho "" 59*9ff8d41cSJaap de Haanecho "Done. Review the changes and update url.txt if needed." 60