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