mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-26 07:39:59 -07:00
global: snapshot
This commit is contained in:
1
scripts/.gitignore
vendored
Normal file
1
scripts/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.tokens
|
||||
8
scripts/js-docs.sh
Executable file
8
scripts/js-docs.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
ROOT_DIR="$SCRIPT_DIR/.."
|
||||
|
||||
cd "$ROOT_DIR/modules/brk-client"
|
||||
npx -y -p typedoc -p typedoc-plugin-markdown typedoc index.js --plugin typedoc-plugin-markdown --out docs --excludeNotDocumented
|
||||
19
scripts/js-publish.sh
Executable file
19
scripts/js-publish.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
ROOT_DIR="$SCRIPT_DIR/.."
|
||||
|
||||
VERSION="$1"
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "Usage: $0 <version>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "$ROOT_DIR/modules/brk-client"
|
||||
|
||||
# Update version in package.json
|
||||
sed -i '' 's/"version": "[^"]*"/"version": "'"$VERSION"'"/' package.json
|
||||
echo "Updated package.json to $VERSION"
|
||||
|
||||
npm publish --access public
|
||||
@@ -1,40 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
ROOT_DIR="$SCRIPT_DIR/.."
|
||||
|
||||
echo "=== Publishing all BRK packages ==="
|
||||
|
||||
# Get version from Cargo.toml
|
||||
VERSION=$(grep 'package.version' "$ROOT_DIR/Cargo.toml" | sed 's/.*= *"//' | sed 's/".*//')
|
||||
echo "Version: $VERSION"
|
||||
|
||||
# Update JS package.json version
|
||||
sed -i '' 's/"version": "[^"]*"/"version": "'"$VERSION"'"/' "$ROOT_DIR/modules/brk-client/package.json"
|
||||
|
||||
# Update Python pyproject.toml version
|
||||
sed -i '' 's/^version = "[^"]*"/version = "'"$VERSION"'"/' "$ROOT_DIR/packages/brk_client/pyproject.toml"
|
||||
|
||||
# 1. Publish Rust crates
|
||||
echo ""
|
||||
echo "=== Rust crates ==="
|
||||
"$SCRIPT_DIR/publish.sh"
|
||||
|
||||
# 2. Publish JavaScript package
|
||||
echo ""
|
||||
echo "=== JavaScript package ==="
|
||||
cd "$ROOT_DIR/modules/brk-client"
|
||||
./scripts/docs.sh
|
||||
npm publish --access public
|
||||
|
||||
# 3. Publish Python package
|
||||
echo ""
|
||||
echo "=== Python package ==="
|
||||
cd "$ROOT_DIR/packages/brk_client"
|
||||
uvx pydoc-markdown > docs/API.md
|
||||
uv build
|
||||
uv publish
|
||||
|
||||
echo ""
|
||||
echo "=== Done! ==="
|
||||
8
scripts/python-docs.sh
Executable file
8
scripts/python-docs.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
ROOT_DIR="$SCRIPT_DIR/.."
|
||||
|
||||
cd "$ROOT_DIR/packages/brk_client"
|
||||
uvx pydoc-markdown > DOCS.md
|
||||
20
scripts/python-publish.sh
Executable file
20
scripts/python-publish.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
ROOT_DIR="$SCRIPT_DIR/.."
|
||||
|
||||
VERSION="$1"
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "Usage: $0 <version>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "$ROOT_DIR/packages/brk_client"
|
||||
|
||||
# Update version in pyproject.toml
|
||||
sed -i '' 's/^version = "[^"]*"/version = "'"$VERSION"'"/' pyproject.toml
|
||||
echo "Updated pyproject.toml to $VERSION"
|
||||
|
||||
uv build
|
||||
uv publish
|
||||
152
scripts/release.sh
Executable file
152
scripts/release.sh
Executable file
@@ -0,0 +1,152 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
ROOT_DIR="$SCRIPT_DIR/.."
|
||||
|
||||
echo "=== BRK Release ==="
|
||||
echo ""
|
||||
|
||||
# Check if version argument provided
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: $0 <version|bump>"
|
||||
echo "Examples:"
|
||||
echo " $0 0.1.0-alpha.3"
|
||||
echo " $0 patch"
|
||||
echo " $0 minor"
|
||||
echo " $0 major"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RELEASE_ARG="$1"
|
||||
echo "Release argument: $RELEASE_ARG"
|
||||
echo ""
|
||||
|
||||
# Load tokens
|
||||
if [ -f "$SCRIPT_DIR/.tokens" ]; then
|
||||
source "$SCRIPT_DIR/.tokens"
|
||||
fi
|
||||
|
||||
# ============================================================================
|
||||
# 0. VERIFY TOKENS
|
||||
# ============================================================================
|
||||
|
||||
echo "=== Verifying tokens ==="
|
||||
echo ""
|
||||
|
||||
echo "--- npm ---"
|
||||
npm whoami || { echo "npm not authenticated. Run: npm login"; exit 1; }
|
||||
echo ""
|
||||
|
||||
echo "--- PyPI ---"
|
||||
if [ -z "$UV_PUBLISH_TOKEN" ]; then
|
||||
echo "UV_PUBLISH_TOKEN not set. Add it to scripts/.tokens"
|
||||
exit 1
|
||||
fi
|
||||
echo "OK"
|
||||
echo ""
|
||||
|
||||
# ============================================================================
|
||||
# 1. TESTS
|
||||
# ============================================================================
|
||||
|
||||
echo "=== Running tests ==="
|
||||
echo ""
|
||||
|
||||
echo "--- Rust ---"
|
||||
cd "$ROOT_DIR"
|
||||
cargo test --workspace
|
||||
echo ""
|
||||
|
||||
echo "--- JavaScript ---"
|
||||
cd "$ROOT_DIR/modules/brk-client"
|
||||
npm test
|
||||
echo ""
|
||||
|
||||
echo "--- Python ---"
|
||||
cd "$ROOT_DIR/packages/brk_client"
|
||||
uv run pytest tests/ -s
|
||||
echo ""
|
||||
|
||||
# ============================================================================
|
||||
# 2. BUILD
|
||||
# ============================================================================
|
||||
|
||||
echo "=== Building ==="
|
||||
echo ""
|
||||
|
||||
echo "--- Rust ---"
|
||||
cd "$ROOT_DIR"
|
||||
cargo build --workspace --release
|
||||
echo ""
|
||||
|
||||
echo "--- JavaScript ---"
|
||||
cd "$ROOT_DIR/modules/brk-client"
|
||||
# JS doesn't need build step, just verify it loads
|
||||
node -e "import('./index.js')"
|
||||
echo "OK"
|
||||
echo ""
|
||||
|
||||
echo "--- Python ---"
|
||||
cd "$ROOT_DIR/packages/brk_client"
|
||||
uv build
|
||||
echo ""
|
||||
|
||||
# ============================================================================
|
||||
# 3. GENERATE DOCS
|
||||
# ============================================================================
|
||||
|
||||
echo "=== Generating docs ==="
|
||||
echo ""
|
||||
|
||||
echo "--- JavaScript ---"
|
||||
"$SCRIPT_DIR/js-docs.sh"
|
||||
echo ""
|
||||
|
||||
echo "--- Python ---"
|
||||
"$SCRIPT_DIR/python-docs.sh"
|
||||
echo ""
|
||||
|
||||
# ============================================================================
|
||||
# 4. CARGO RELEASE (Rust crates)
|
||||
# ============================================================================
|
||||
|
||||
echo "=== Rust release ==="
|
||||
echo ""
|
||||
|
||||
cd "$ROOT_DIR"
|
||||
# Version bump, commit, and tag (but don't publish yet)
|
||||
cargo release "$RELEASE_ARG" --execute --no-publish --allow-dirty
|
||||
|
||||
# Publish crates with retry logic for rate limits
|
||||
"$SCRIPT_DIR/rust-publish.sh"
|
||||
|
||||
# Extract actual version from Cargo.toml after release
|
||||
VERSION=$(grep '^package.version' "$ROOT_DIR/Cargo.toml" | sed 's/.*= *"//' | sed 's/".*//')
|
||||
echo ""
|
||||
echo "Released Rust crates at version: $VERSION"
|
||||
|
||||
# ============================================================================
|
||||
# 5. JAVASCRIPT PACKAGE
|
||||
# ============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=== JavaScript package ==="
|
||||
"$SCRIPT_DIR/js-publish.sh" "$VERSION"
|
||||
echo ""
|
||||
|
||||
# ============================================================================
|
||||
# 6. PYTHON PACKAGE
|
||||
# ============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=== Python package ==="
|
||||
"$SCRIPT_DIR/python-publish.sh" "$VERSION"
|
||||
echo ""
|
||||
|
||||
# ============================================================================
|
||||
# DONE
|
||||
# ============================================================================
|
||||
|
||||
echo "=== Done! ==="
|
||||
echo "Released v$VERSION"
|
||||
@@ -3,9 +3,9 @@ set -e
|
||||
|
||||
# Order determined by topological sort of dependency graph
|
||||
CRATES=(
|
||||
brk_alloc
|
||||
brk_error
|
||||
brk_logger
|
||||
brk_traversable_derive
|
||||
brk_types
|
||||
brk_fetcher
|
||||
brk_rpc
|
||||
@@ -13,13 +13,14 @@ CRATES=(
|
||||
brk_reader
|
||||
brk_iterator
|
||||
brk_store
|
||||
brk_traversable_derive
|
||||
brk_traversable
|
||||
brk_grouper
|
||||
brk_bencher
|
||||
brk_indexer
|
||||
brk_computer
|
||||
brk_query
|
||||
brk_binder
|
||||
brk_bindgen
|
||||
brk_mcp
|
||||
brk_server
|
||||
brk
|
||||
@@ -34,7 +35,7 @@ echo "Working from: $(pwd)"
|
||||
|
||||
for crate in "${CRATES[@]}"; do
|
||||
cd "$crate"
|
||||
cargo publish --color=always 2>&1 | tee /tmp/publish_$$.log
|
||||
cargo publish --allow-dirty --color=always 2>&1 | tee /tmp/publish_$$.log
|
||||
if [ ${PIPESTATUS[0]} -ne 0 ]; then
|
||||
if ! grep -q "already exists on" /tmp/publish_$$.log; then
|
||||
rm -f /tmp/publish_$$.log
|
||||
Reference in New Issue
Block a user