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