Files
beads/scripts
Marco Del Pin f420882f02 fix(install): prevent shell corruption from directory deletion
This fix addresses 3 critical bugs in the install script that caused cascading failures:

**Bug #1: Directory Deletion Without Restoration**
- Script executed `cd "$tmp_dir"` then `rm -rf "$tmp_dir"` on error
- Left shell in deleted directory causing "cannot determine current directory" errors
- Added `cd - > /dev/null || cd "$HOME"` before all `rm -rf "$tmp_dir"` calls (7 locations)

**Bug #2: Go Command Failures**
- Go commands failed with "cannot determine current directory" after directory deletion
- Caused empty `$go_version` variable

**Bug #3: Empty Variable Integer Comparison**
- Empty `$major` and `$minor` variables caused "integer expression expected" bash error (line 167)
- Added variable validation before integer comparison

**Changes:**
- Added 7 directory restoration calls before temp directory cleanup
- Changed all `return 1` to `return 0` per bash safety best practices (prevents shell exit if sourced)
- Added Go version variable validation with regex check
- Added warning comment about script execution vs sourcing

**Test Results:**
- BEFORE: 5 "cannot determine current directory" errors + 2 "integer expression expected" errors
- AFTER: 0 errors, clean installation

**Impact:**
- Eliminates confusing error messages during installation
- Prevents shell corruption if script is accidentally sourced
- Improves error recovery when pre-built binaries are unavailable
- Maintains backward compatibility - all installation paths still work

**Related Documentation:**
Comprehensive analysis available in test repository:
`docs/development/BEADS_INSTALL_SCRIPT_ANALYSIS.md`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 15:40:25 +02:00
..

Beads Scripts

Utility scripts for maintaining the beads project.

bump-version.sh

Bumps the version number across all beads components in a single command.

Usage

# Show usage
./scripts/bump-version.sh

# Update versions (shows diff, no commit)
./scripts/bump-version.sh 0.9.3

# Update versions and auto-commit
./scripts/bump-version.sh 0.9.3 --commit

What It Does

Updates version in all these files:

  • cmd/bd/version.go - bd CLI version constant
  • .claude-plugin/plugin.json - Plugin version
  • .claude-plugin/marketplace.json - Marketplace plugin version
  • integrations/beads-mcp/pyproject.toml - MCP server version
  • README.md - Alpha status version
  • PLUGIN.md - Version requirements

Features

  • Validates semantic versioning format (MAJOR.MINOR.PATCH)
  • Verifies all versions match after update
  • Shows git diff of changes
  • Auto-commits with standardized message (optional)
  • Cross-platform compatible (macOS and Linux)

Examples

# Bump to 0.9.3 and review changes
./scripts/bump-version.sh 0.9.3
# Review the diff, then manually commit

# Bump to 1.0.0 and auto-commit
./scripts/bump-version.sh 1.0.0 --commit
git push origin main

Why This Script Exists

Previously, version bumps only updated cmd/bd/version.go, leaving other components out of sync. This script ensures all version numbers stay consistent across the project.

Safety

  • Checks for uncommitted changes before proceeding
  • Refuses to auto-commit if there are existing uncommitted changes
  • Validates version format before making any changes
  • Verifies all versions match after update
  • Shows diff for review before commit

Future Scripts

Additional maintenance scripts may be added here as needed.