mirror of
https://github.com/bendtherules/ask262.git
synced 2026-08-18 13:21:55 +00:00
feat: Add npm release script
This commit is contained in:
Executable
+113
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Parse arguments
|
||||
BUMP_VERSION="patch" # Default to patch
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--patch|--minor|--major)
|
||||
BUMP_VERSION="${1:2}"
|
||||
shift
|
||||
;;
|
||||
--no-bump)
|
||||
BUMP_VERSION=""
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
echo "Usage: $0 [--patch|--minor|--major|--no-bump]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " --patch Bump patch version (0.0.1 -> 0.0.2) [default]"
|
||||
echo " --minor Bump minor version (0.0.1 -> 0.1.0)"
|
||||
echo " --major Bump major version (0.0.1 -> 1.0.0)"
|
||||
echo " --no-bump Don't bump version, release as-is"
|
||||
echo " -h, --help Show this help message"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
echo "Run '$0 --help' for usage"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "🔍 Checking for uncommitted git changes..."
|
||||
|
||||
# Check for uncommitted changes
|
||||
if ! git diff --quiet HEAD || ! git diff --cached --quiet HEAD; then
|
||||
echo "❌ Error: You have uncommitted changes!"
|
||||
echo ""
|
||||
git status --short
|
||||
echo ""
|
||||
echo "Please commit or stash your changes before releasing."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for untracked files
|
||||
UNTRACKED=$(git ls-files --others --exclude-standard)
|
||||
if [ -n "$UNTRACKED" ]; then
|
||||
echo "⚠️ Warning: You have untracked files:"
|
||||
echo "$UNTRACKED"
|
||||
echo ""
|
||||
read -p "Continue anyway? (y/N) " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "Aborted."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "✅ No uncommitted changes"
|
||||
|
||||
# Bump version if requested
|
||||
if [ -n "$BUMP_VERSION" ]; then
|
||||
echo ""
|
||||
echo "📦 Bumping $BUMP_VERSION version..."
|
||||
npm version $BUMP_VERSION --no-git-tag-version
|
||||
echo "✅ Version bumped"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🔍 Checking for hard links..."
|
||||
|
||||
# Find files with hard links (link count > 1)
|
||||
HARD_LINKS=$(find . -type f -links +1 \
|
||||
-not -path "./node_modules/*" \
|
||||
-not -path "./engine262/node_modules/*" \
|
||||
-not -path "./.opencode/node_modules/*" \
|
||||
-not -path "./.git/*" 2>/dev/null || true)
|
||||
|
||||
if [ -n "$HARD_LINKS" ]; then
|
||||
echo "⚠️ Found hard links, fixing..."
|
||||
echo "$HARD_LINKS"
|
||||
|
||||
# Break hard links by copying
|
||||
echo "$HARD_LINKS" | while read -r file; do
|
||||
echo " Fixing: $file"
|
||||
tmp="/tmp/fix-hardlink-$(basename "$file").$$"
|
||||
cp "$file" "$tmp"
|
||||
mv -f "$tmp" "$file"
|
||||
done
|
||||
|
||||
echo "✅ Hard links fixed"
|
||||
else
|
||||
echo "✅ No hard links found"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "📦 Running release checks..."
|
||||
npm run prepublish
|
||||
|
||||
echo ""
|
||||
echo "🚀 Publishing to npm..."
|
||||
read -p "Are you sure you want to release? (y/N) " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
npm publish --access=public
|
||||
echo ""
|
||||
echo "✅ Released successfully!"
|
||||
else
|
||||
echo "❌ Aborted."
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user