#!/usr/bin/env bash
set -euo pipefail

# このスクリプトはbin/配下にあるため、プラグインルートは一つ上の階層です。
plugin_root="$(cd "$(dirname "$(readlink -f "$0")")/.." && pwd)"

# ビルド済みなら何もせず即座に終了します。
# プラグイン更新時はプラグインごと入れ替わりビルドしたファイルも消えるため、
# 初回・更新後の両方でビルドされていないことを検知できます。
[ -d "${plugin_root}/dist" ] && exit 0

# 競合防止のためにロックを取得します。
exec 9>"${plugin_root}/.build.lock"
flock --wait 250 9

# ロックしている間に他のプロセスがビルドしていたら終了します。
[ -d "${plugin_root}/dist" ] && exit 0

# 必要なコマンドが存在するか簡易検証します。
if ! command -v npm &>/dev/null; then
  echo "Error: npm is not found. Install Node.js to build the plugin." >&2
  exit 1
fi

# ディレクトリを固定します。
cd "${plugin_root}"
# 依存関係をインストールします。
npm ci
# ビルドします。
npm run build
