Implement recipe loading, parsing, and running infrastructure. Add initial result-refactor recipe for converting Go error handling to monadic Result[T] style. Includes markdown recipe definition, YAML frontmatter parsing, step extraction, and basic runner.
54 lines
1.7 KiB
Markdown
54 lines
1.7 KiB
Markdown
---
|
|
name: result-refactor
|
|
description: Convert traditional Go error handling to Result[T] monadic style
|
|
version: 1.0
|
|
|
|
parameters:
|
|
package_path:
|
|
type: string
|
|
default: internal/service
|
|
description: Package to refactor
|
|
dry_run:
|
|
type: bool
|
|
default: true
|
|
description: If true, only generate patches
|
|
|
|
allowed_shell_commands:
|
|
- go test ./...
|
|
- go fmt ./...
|
|
- go vet ./...
|
|
- rg --files
|
|
- git diff --name-only
|
|
- jq
|
|
|
|
---
|
|
|
|
# Result[T] Refactoring Recipe
|
|
|
|
**Overview**
|
|
Refactors all error handling in the target package to use the new Result[T] pattern.
|
|
|
|
## Execution Steps
|
|
|
|
### Step 1: Discover files
|
|
**Objective:** Find every file that needs changing.
|
|
**Instructions:** Recursively scan `{{.package_path}}` for `.go` files containing `if err != nil`.
|
|
**Expected output:** A clean numbered list of full file paths (one per line).
|
|
|
|
### Step 2: Refactor each file
|
|
**Objective:** Generate the updated code.
|
|
**Instructions:** For each file from Step 1:
|
|
- Read the full original content.
|
|
- Refactor it to use `Result[T]` instead of naked errors (follow existing style, preserve comments).
|
|
- Return *ONLY* the complete new file inside a ```go code block (no explanations).
|
|
**Expected output:** One ```go block per file, clearly labelled with the filename.
|
|
|
|
### Step 3: Apply or patch
|
|
**Objective:** Safely write changes or create reviewable output.
|
|
**Instructions:**
|
|
- If `dry_run` is true → create a unified diff patch file for review.
|
|
- If false → write the new files (backup originals as `.bak`).
|
|
**Expected output:** Confirmation of what was written + full path to any patch file.
|
|
|
|
### Final Summary
|
|
Give me a concise executive summary: number of files changed, any warnings or patterns you noticed, and your recommended next step. |