A replica of Keytrace
at main 86 lines 2.3 kB view raw
1#!/bin/bash 2set -e 3 4VERSION_TYPE=$1 5 6if [[ ! "$VERSION_TYPE" =~ ^(major|minor|patch)$ ]]; then 7 echo "Usage: ./scripts/deploy.sh <major|minor|patch>" 8 exit 1 9fi 10 11echo "==> Bumping $VERSION_TYPE version across packages..." 12 13# Get current version from runner package (source of truth) 14CURRENT_VERSION=$(node -p "require('./packages/runner/package.json').version") 15echo " Current version: $CURRENT_VERSION" 16 17# Calculate new version 18IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_VERSION" 19MAJOR=${VERSION_PARTS[0]} 20MINOR=${VERSION_PARTS[1]} 21PATCH=${VERSION_PARTS[2]} 22 23case $VERSION_TYPE in 24 major) 25 MAJOR=$((MAJOR + 1)) 26 MINOR=0 27 PATCH=0 28 ;; 29 minor) 30 MINOR=$((MINOR + 1)) 31 PATCH=0 32 ;; 33 patch) 34 PATCH=$((PATCH + 1)) 35 ;; 36esac 37 38NEW_VERSION="$MAJOR.$MINOR.$PATCH" 39echo " New version: $NEW_VERSION" 40 41# Update package versions 42PACKAGES=("packages/runner" "packages/claims" "packages/lexicon") 43 44for pkg in "${PACKAGES[@]}"; do 45 echo "==> Updating $pkg to $NEW_VERSION..." 46 node -e " 47 const fs = require('fs'); 48 const pkg = JSON.parse(fs.readFileSync('$pkg/package.json', 'utf8')); 49 pkg.version = '$NEW_VERSION'; 50 fs.writeFileSync('$pkg/package.json', JSON.stringify(pkg, null, 2) + '\n'); 51 " 52done 53 54echo "==> Installing dependencies and building..." 55yarn install 56yarn build 57 58echo "==> Validating and publishing lexicons to ATProto..." 59# Load credentials from .env 60if [ -f "apps/keytrace.dev/.env" ]; then 61 export GOAT_USERNAME=keytrace.dev 62 export GOAT_PASSWORD=$(grep '^KEYTRACE_EMAIL_PASSWORD=' apps/keytrace.dev/.env | cut -d'=' -f2- | tr -d "'\"") 63else 64 echo " Warning: apps/keytrace.dev/.env not found, skipping lexicon publish" 65fi 66 67if [ -n "$GOAT_USERNAME" ] && [ -n "$GOAT_PASSWORD" ]; then 68 yarn workspace @keytrace/lexicon validate 69 (cd packages/lexicon && goat lex publish) 70 echo " Lexicons published to ATProto" 71else 72 echo " Skipping ATProto lexicon publish (no credentials)" 73fi 74 75echo "==> Creating git tag v$NEW_VERSION..." 76git add . 77git commit -m "Release v$NEW_VERSION" 78git tag "v$NEW_VERSION" 79 80echo "==> Pushing to git (tag push triggers npm publish via GitHub Actions)..." 81git push 82git push --tags 83 84echo "" 85echo "Done! v$NEW_VERSION tagged and pushed." 86echo "npm publish will run via GitHub Actions: https://github.com/orta/keytrace/actions"