|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -euo pipefail |
| 3 | + |
| 4 | +REPOSITORY="${LBUG_GITHUB_REPOSITORY:-LadybugDB/ladybug}" |
| 5 | +RUN_ID="${LBUG_JAVA_NATIVE_RUN_ID:-}" |
| 6 | +TARGET_DIR="${LBUG_JAVA_NATIVE_TARGET_DIR:-src/main/resources}" |
| 7 | + |
| 8 | +OS="$(uname -s)" |
| 9 | +ARCH="$(uname -m)" |
| 10 | + |
| 11 | +case "$OS:$ARCH" in |
| 12 | + Linux:x86_64) |
| 13 | + ARTIFACT_NAME="java-lib-linux-x86_64" |
| 14 | + ;; |
| 15 | + Linux:aarch64|Linux:arm64) |
| 16 | + ARTIFACT_NAME="java-lib-linux-aarch64" |
| 17 | + ;; |
| 18 | + Darwin:arm64) |
| 19 | + ARTIFACT_NAME="java-lib-osx-arm64" |
| 20 | + ;; |
| 21 | + MINGW*:x86_64|MSYS*:x86_64|CYGWIN*:x86_64) |
| 22 | + ARTIFACT_NAME="java-lib-win-x86_64" |
| 23 | + ;; |
| 24 | + *) |
| 25 | + echo "Unsupported platform for Java native libraries: $OS $ARCH" >&2 |
| 26 | + exit 1 |
| 27 | + ;; |
| 28 | +esac |
| 29 | + |
| 30 | +if [ -z "$RUN_ID" ]; then |
| 31 | + if ! command -v gh >/dev/null 2>&1; then |
| 32 | + echo "gh CLI is required when LBUG_JAVA_NATIVE_RUN_ID is not set" >&2 |
| 33 | + exit 1 |
| 34 | + fi |
| 35 | + while IFS= read -r candidate_run_id; do |
| 36 | + if gh api "/repos/${REPOSITORY}/actions/runs/${candidate_run_id}/artifacts" \ |
| 37 | + --jq '.artifacts[].name' | grep -qx "$ARTIFACT_NAME"; then |
| 38 | + RUN_ID="$candidate_run_id" |
| 39 | + break |
| 40 | + fi |
| 41 | + done < <(gh run list --repo "$REPOSITORY" --workflow "Build and Deploy" --status success \ |
| 42 | + --limit 20 --json databaseId --jq '.[].databaseId') |
| 43 | +fi |
| 44 | + |
| 45 | +if [ -z "$RUN_ID" ]; then |
| 46 | + echo "Unable to resolve a workflow run with artifact $ARTIFACT_NAME" >&2 |
| 47 | + exit 1 |
| 48 | +fi |
| 49 | + |
| 50 | +TMPDIR="$(mktemp -d)" |
| 51 | +trap 'rm -rf "$TMPDIR"' EXIT |
| 52 | + |
| 53 | +mkdir -p "$TARGET_DIR" |
| 54 | +gh run download "$RUN_ID" --repo "$REPOSITORY" --name "$ARTIFACT_NAME" --dir "$TMPDIR" |
| 55 | +find "$TMPDIR" -type f -name 'liblbug_java_native*' -exec cp {} "$TARGET_DIR/" \; |
| 56 | + |
| 57 | +echo "Installed $ARTIFACT_NAME from $REPOSITORY run $RUN_ID into $TARGET_DIR" |
0 commit comments