#!/usr/bin/env bash
# opencode-kit version — show version and changelog entry for current version
# Usage: bash src/version.sh
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=./platform.sh
. "$SCRIPT_DIR/platform.sh"

export PKG="$SCRIPT_DIR/../package.json"
export CHLOG="$SCRIPT_DIR/../CHANGELOG.md"

# Read version from package.json
VERSION=$(node -e "console.log(require(process.env.PKG).version)") || {
  echo "Error: Cannot read package.json at $PKG" >&2
  exit 1
}
export VERSION

echo "opencode-kit v${VERSION}"
echo ""

# Extract changelog section for the current version using a quoted heredoc
# (quoted 'NODESCRIPT' prevents bash expansion of $ inside the node code)
node <<'NODESCRIPT'
const fs = require('fs');
const c = fs.readFileSync(process.env.CHLOG, 'utf8');
const v = process.env.VERSION.replace(/\./g, '\\.');
// Match ## [X.Y.Z] ... up to next ## or end of file
const re = new RegExp('## \\[' + v + '\\][^\\n]*\\n([\\s\\S]*?)(?=\\n## |\\n$)', 'm');
const m = c.match(re);
if (m) {
  const lines = m[1].trim().split('\n').filter(l => l.trim());
  for (const line of lines) {
    console.log(line);
  }
} else {
  console.log('(no changelog entry found for v' + process.env.VERSION + ')');
}
NODESCRIPT
