b9c4b16baa
## 🔄 Add Template Migration to CLI ### Summary This PR introduces a new `migrate` command to the E2B CLI that helps users transition from the legacy Dockerfile + TOML configuration format to the new Template SDK format. The migration tool automatically converts existing `e2b.Dockerfile` and `e2b.toml` configurations into SDK-compatible template files using Handlebars templates. ### What's Changed #### ✨ New Features - **Template Migration Command**: Added `e2b template migrate` command for converting legacy configurations to SDK format - **Multi-Language Support**: Supports migration to TypeScript, Python (sync), and Python (async) formats - **Interactive Language Selection**: CLI prompts for target language when not specified - **Multi-stage Dockerfile Support**: Added fallback handling for complex multi-stage Dockerfiles #### 🔧 Technical Improvements - **Enhanced ENV Handling**: Improved parsing of multiple environment variables from single ENV instructions - **File Name Conflict Resolution**: Automatic unique filename generation to prevent overwriting existing files - **Comprehensive Template Generation**: Creates both development and production build files #### 📁 New Template Files - `typescript-template.hbs` - TypeScript template generation - `typescript-build.hbs` - TypeScript build script template - `python-template.hbs` - Python template generation (supports both sync/async) - `python-build-async.hbs` - Python async build script template - `python-build-sync.hbs` - Python sync build script template ### Usage ```bash # Migrate with interactive language selection e2b template migrate # Migrate to specific language e2b template migrate --language typescript e2b template migrate --language python-sync e2b template migrate --language python-async # Custom paths e2b template migrate --dockerfile custom.dockerfile --config custom.toml ``` ### Generated Output The migration command generates three files per target: - `template.{ts|py}` - Template definition using SDK - `build{.|_}dev.{ts|py}` - Development build script - `build{.|_}prod.{ts|py}` - Production build script ### Migration Process 1. **Parse Configuration**: Reads `e2b.toml` for template settings 2. **Dockerfile Analysis**: Uses E2B SDK to parse Dockerfile instructions 3. **Transformation**: Converts Docker instructions to SDK method calls 4. **Code Generation**: Uses Handlebars templates to generate target language files 5. **File Creation**: Writes template and build files with conflict resolution ### Error Handling - **Graceful Dockerfile Parsing**: Falls back to custom image reference for unparseable Dockerfiles - **Clear User Guidance**: Provides manual build instructions when automatic conversion fails - **Validation**: Ensures required configuration files exist before migration
What is E2B?
E2B is an open-source infrastructure that allows you to run AI-generated code in secure isolated sandboxes in the cloud. To start and control sandboxes, use our JavaScript SDK or Python SDK.
Run your first Sandbox
1. Install SDK
npm i @e2b/code-interpreter
2. Get your E2B API key
E2B_API_KEY=e2b_***
3. Execute code with code interpreter inside Sandbox
import { Sandbox } from '@e2b/code-interpreter'
const sbx = await Sandbox.create()
await sbx.runCode('x = 1')
const execution = await sbx.runCode('x+=1; x')
console.log(execution.text) // outputs 2
4. Check docs
Visit E2B documentation.
5. E2B cookbook
Visit our Cookbook to get inspired by examples with different LLMs and AI frameworks.
