166 lines
5.1 KiB
Markdown
166 lines
5.1 KiB
Markdown
# ob-elixir Implementation Tasks
|
|
|
|
This directory contains step-by-step implementation tasks for building the ob-elixir package.
|
|
|
|
## Overview
|
|
|
|
The implementation is organized into 4 phases:
|
|
|
|
| Phase | Description | Tasks | Priority |
|
|
|-------|-------------|-------|----------|
|
|
| **Phase 1** | Core MVP | 01-06 | Critical |
|
|
| **Phase 2** | Sessions | 07 | High |
|
|
| **Phase 3** | Mix Integration | 08 | High |
|
|
| **Phase 4** | Advanced Features | 09-10 | Medium/Low |
|
|
| **Phase 5** | Literate Programming | 11-13 | Medium |
|
|
|
|
## Task List
|
|
|
|
### Phase 1: Core (MVP)
|
|
|
|
These tasks implement the minimum viable product - basic Elixir code execution in org-mode.
|
|
|
|
| Task | Title | Time | Status |
|
|
|------|-------|------|--------|
|
|
| [01](01-project-setup.md) | Project Setup | 30 min | Pending |
|
|
| [02](02-basic-execution.md) | Basic Code Execution | 1-2 hrs | Pending |
|
|
| [03](03-variable-injection.md) | Variable Injection | 1-2 hrs | Pending |
|
|
| [04](04-error-handling.md) | Error Handling | 1 hr | Pending |
|
|
| [05](05-result-formatting.md) | Result Formatting | 1-2 hrs | Pending |
|
|
| [06](06-test-suite.md) | Comprehensive Test Suite | 2-3 hrs | Pending |
|
|
|
|
**Phase 1 Deliverables:**
|
|
- Execute Elixir code with `C-c C-c`
|
|
- `:results value` and `:results output` work
|
|
- `:var` header arguments work
|
|
- Errors are properly reported
|
|
- Lists become org tables
|
|
- Comprehensive test coverage
|
|
|
|
### Phase 2: Sessions
|
|
|
|
| Task | Title | Time | Status |
|
|
|------|-------|------|--------|
|
|
| [07](07-session-support.md) | IEx Session Support | 3-4 hrs | Pending |
|
|
|
|
**Phase 2 Deliverables:**
|
|
- `:session name` creates persistent IEx sessions
|
|
- Variables and modules persist across blocks
|
|
- Session cleanup commands
|
|
|
|
### Phase 3: Mix Integration
|
|
|
|
| Task | Title | Time | Status |
|
|
|------|-------|------|--------|
|
|
| [08](08-mix-project-support.md) | Mix Project Support | 2-3 hrs | Pending |
|
|
|
|
**Phase 3 Deliverables:**
|
|
- `:mix-project path` executes in project context
|
|
- Auto-detection of Mix projects
|
|
- `:mix-env` sets MIX_ENV
|
|
- Sessions with Mix (`iex -S mix`)
|
|
|
|
### Phase 4: Advanced Features
|
|
|
|
| Task | Title | Time | Status |
|
|
|------|-------|------|--------|
|
|
| [09](09-remote-shell.md) | Remote Shell (remsh) | 2-3 hrs | Pending |
|
|
| [10](10-async-execution.md) | Async Execution | 3-4 hrs | Pending |
|
|
|
|
**Phase 4 Deliverables:**
|
|
- `:remsh node@host` connects to running nodes
|
|
- `:async yes` for non-blocking execution
|
|
|
|
### Phase 5: Literate Programming Enhancements
|
|
|
|
| Task | Title | Time | Status |
|
|
|------|-------|------|--------|
|
|
| [11](11-fix-error-display-in-buffer.md) | Fix Error Display in Buffer | 1 hr | Pending |
|
|
| [12](12-imports-block-support.md) | Imports Block Support | 1-2 hrs | Pending |
|
|
| [13](13-module-definition-blocks.md) | Module Definition Blocks | 2-3 hrs | Pending |
|
|
|
|
**Phase 5 Deliverables:**
|
|
- `#+BEGIN_IMPORTS elixir` blocks for shared imports/aliases
|
|
- `:module ModuleName` header for defining reusable functions
|
|
- Multiple blocks with same `:module` merge their functions
|
|
- Functions available via explicit imports in subsequent blocks
|
|
|
|
## Implementation Order
|
|
|
|
```
|
|
Phase 1 (Must complete in order)
|
|
├── 01-project-setup
|
|
├── 02-basic-execution
|
|
├── 03-variable-injection
|
|
├── 04-error-handling
|
|
├── 05-result-formatting
|
|
└── 06-test-suite
|
|
|
|
Phase 2 (After Phase 1)
|
|
└── 07-session-support
|
|
|
|
Phase 3 (After Phase 1, can parallel with Phase 2)
|
|
└── 08-mix-project-support
|
|
|
|
Phase 4 (After relevant dependencies)
|
|
├── 09-remote-shell (after 07)
|
|
└── 10-async-execution (after Phase 1)
|
|
|
|
Phase 5 (After Phase 1, builds on 12)
|
|
├── 11-fix-error-display-in-buffer
|
|
├── 12-imports-block-support
|
|
└── 13-module-definition-blocks (after 12)
|
|
```
|
|
|
|
## Time Estimates
|
|
|
|
| Phase | Estimated Time |
|
|
|-------|----------------|
|
|
| Phase 1 | 8-12 hours |
|
|
| Phase 2 | 3-4 hours |
|
|
| Phase 3 | 2-3 hours |
|
|
| Phase 4 | 5-7 hours |
|
|
| Phase 5 | 4-6 hours |
|
|
| **Total** | **22-32 hours** |
|
|
|
|
## Getting Started
|
|
|
|
1. Start with [Task 01: Project Setup](01-project-setup.md)
|
|
2. Complete Phase 1 tasks in order
|
|
3. Phases 2-4 can be done based on your priorities
|
|
|
|
## Task Template
|
|
|
|
Each task file includes:
|
|
|
|
- **Objective**: What the task accomplishes
|
|
- **Prerequisites**: What must be done first
|
|
- **Steps**: Detailed implementation steps with code
|
|
- **Tests**: Test cases to verify the implementation
|
|
- **Acceptance Criteria**: Checklist of requirements
|
|
- **Troubleshooting**: Common issues and solutions
|
|
|
|
## Testing
|
|
|
|
Run tests after each task:
|
|
|
|
```bash
|
|
make test
|
|
```
|
|
|
|
For integration tests with org-mode:
|
|
|
|
```bash
|
|
make test-integration
|
|
```
|
|
|
|
## Documentation References
|
|
|
|
| Document | Content |
|
|
|----------|---------|
|
|
| [01-emacs-elisp-best-practices.md](../docs/01-emacs-elisp-best-practices.md) | Elisp conventions |
|
|
| [02-testing-emacs-elisp.md](../docs/02-testing-emacs-elisp.md) | Testing strategies |
|
|
| [03-org-babel-implementation-guide.md](../docs/03-org-babel-implementation-guide.md) | Org-babel internals |
|
|
| [04-elixir-integration-strategies.md](../docs/04-elixir-integration-strategies.md) | Elixir execution |
|
|
| [05-existing-implementations-analysis.md](../docs/05-existing-implementations-analysis.md) | Prior art analysis |
|