# @masukomi/pi-rbenv

A [pi](https://pi.dev) extension package that automatically manages and sets your Ruby version using [rbenv](https://rbenv.org/).

It intercepts all subprocess commands, interactive user bash executions (`!`/`!!`), and core pi tool calls to ensure that they are executed under the correct Ruby version with the appropriate environment variables and `PATH` adjustments.

## Features

- **Dynamic Ruby Version Resolution:** Automatically reads and respects `.ruby-version` files in the project root.
- **Graceful Fallbacks:** Falls back to rbenv's global Ruby version if a project's requested version is not installed or if no `.ruby-version` is found.
- **Subprocess Integration:** Pre-pends rbenv shims to the environment `PATH` across all subprocess commands.
- **Tool Interception:** Automatically injects the correct `RBENV_VERSION` and `PATH` into the built-in `bash` tool, `ctx_shell`, and `user_bash` (!/!!) sessions.
  Note: `ctx_shell` is part of [pi-lean-ctx](https://pi.dev/packages/pi-lean-ctx)
- **Startup Notification:** Shows a neat notification when the session starts telling you exactly which Ruby version is active and if a warning/fallback is in effect.

## Installation

### Local Installation (for development or private use)

Run the following command inside your project directory, or point to the absolute path of this package:

```bash
pi install /path/to/pi-rbenv
```

### Git Installation

```bash
pi install git:github.com/masukomi/pi-rbenv
```

### npm Installation

```bash
pi install npm:@masukomi/pi-rbenv
```

## How It Works

1. **On Session Start:** Checks if there is a `.ruby-version` file in the project directory. If present, it verifies whether the requested version is installed under `rbenv`.
2. **Environment Tuning:** If the requested version is present, it sets `RBENV_VERSION` to that version. If not, it falls back to the default/global `rbenv` version and displays a warning notification in the TUI/CLI.
3. **Subprocess/Tool Overriding:**
   - Overrides the built-in `bash` tool to ensure it runs with the modified environment.
   - Intercepts the `shell`/`ctx_shell` tools to export the proper `PATH` and `RBENV_VERSION` variables before command execution.
   - Wraps the interactive user CLI command runner (`!`/`!!`) to preserve active rbenv settings.

## License

MIT
