xref: /plugin/bpmnio/update-vendor.sh (revision 9ff8d41c7727ff9fa896ee8f49e170f6b8272716)
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