Ответ
Да, писал обертки для CLI-утилит и API. Например, обертка для ffmpeg в Go:
type FFmpeg struct {
binPath string
}
func NewFFmpeg(path string) *FFmpeg {
return &FFmpeg{binPath: path}
}
func (f *FFmpeg) Convert(input, output string) error {
cmd := exec.Command(f.binPath,
"-i", input,
"-c:v", "libx264",
"-crf", "23",
output)
if err := cmd.Run(); err != nil {
return fmt.Errorf("ffmpeg error: %w", err)
}
return nil
}
Ключевые моменты:
- Инкапсуляция вызовов внешних утилит
- Упрощение сложного API
- Добавление типизации и обработки ошибок
- Возможность мокирования в тестах
Чаще всего оборачиваю: CLI-утилиты, HTTP API, SDK облачных провайдеров.