Add resilient setup script with pnpm auto-install
- scripts/setup.sh: Checks for pnpm, installs via corepack/npm if missing - package.json: Updated to call bash script instead of node directly - README.md: Updated with better quick start and troubleshooting
This commit is contained in:
104
scripts/setup.sh
Normal file
104
scripts/setup.sh
Normal file
@@ -0,0 +1,104 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Setup script for workflow template
|
||||
# - Installs pnpm if missing
|
||||
# - Installs dependencies
|
||||
# - Sets up pre-commit hook
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
echo "=========================================="
|
||||
echo "Workflow Template Setup"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# Colors
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Step 1: Check/install pnpm
|
||||
echo "Checking for pnpm..."
|
||||
|
||||
if command -v pnpm &> /dev/null; then
|
||||
echo -e "${GREEN}pnpm found: $(pnpm --version)${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}pnpm not found. Installing...${NC}"
|
||||
|
||||
# Try corepack first (ships with Node 16+)
|
||||
if command -v corepack &> /dev/null; then
|
||||
echo "Using corepack to enable pnpm..."
|
||||
corepack enable
|
||||
corepack prepare pnpm@latest --activate
|
||||
# Try npm as fallback
|
||||
elif command -v npm &> /dev/null; then
|
||||
echo "Using npm to install pnpm globally..."
|
||||
npm install -g pnpm
|
||||
else
|
||||
echo ""
|
||||
echo -e "${RED}ERROR: Neither pnpm, corepack, nor npm found.${NC}"
|
||||
echo ""
|
||||
echo "Please install Node.js first:"
|
||||
echo " - https://nodejs.org (recommended)"
|
||||
echo " - Or via your system's package manager"
|
||||
echo ""
|
||||
echo "After installing Node.js, re-run this setup:"
|
||||
echo " pnpm run setup"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}pnpm installed: $(pnpm --version)${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Step 2: Install dependencies
|
||||
echo "Installing dependencies..."
|
||||
pnpm install
|
||||
|
||||
# Step 3: Install pre-commit hook
|
||||
echo ""
|
||||
echo "Setting up pre-commit hook..."
|
||||
|
||||
# Detect git directory
|
||||
if [ -d ".git" ]; then
|
||||
mkdir -p .git/hooks
|
||||
else
|
||||
echo -e "${YELLOW}Warning: .git directory not found. Run 'git init' first if this is a new repo.${NC}"
|
||||
echo "Creating hooks directory anyway..."
|
||||
mkdir -p .git/hooks
|
||||
fi
|
||||
|
||||
# Create pre-commit hook
|
||||
cat > .git/hooks/pre-commit << 'EOF'
|
||||
#!/bin/bash
|
||||
# Pre-commit hook for issue-based workflow
|
||||
# Automatically installed by pnpm run setup
|
||||
|
||||
node .hooks/issue-linter.js
|
||||
EOF
|
||||
|
||||
chmod +x .git/hooks/pre-commit
|
||||
|
||||
# Also make setup script executable
|
||||
chmod +x scripts/setup.sh
|
||||
|
||||
echo -e "${GREEN}Pre-commit hook installed.${NC}"
|
||||
echo ""
|
||||
|
||||
# Step 4: Summary
|
||||
echo "=========================================="
|
||||
echo -e "${GREEN}Setup complete!${NC}"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo " 1. Read docs/workflow/INDEX.md"
|
||||
echo " 2. Check .issues/INDEX.md for open issues"
|
||||
echo " 3. Start working on an issue or create a new one"
|
||||
echo ""
|
||||
echo "The pre-commit hook will validate issue files before every commit."
|
||||
echo "Code changes without a valid issue file will be rejected."
|
||||
echo ""
|
||||
Reference in New Issue
Block a user