Привет! Как можно красиво и с удобством создавать REPL (Read-Eval-Print-Loop) в Golang?
Небольшое предисловие:
Не так давно я решил написать проект, который заключается в создании защищенного хранилища. Для него мне потребовался удобный инструмент по типу REPL, чтобы можно было работать с хранилищем напрямую из консоли. Поискав удобные инструменты в интернете - я так ничего и не нашел. Что-ж... Пора сделать свое!
Для этого я написал пакет (модуль, но я зову пакетами) Replyme
- инструмент для создания REPL в Golang.
Как его установить?
Все просто!
go get github.com/danyasatsuk/replyme
Как использовать?
Для начала опишите свою REPL-сессию:
app := &replyme.App{
Name: "mysuperapp",
Usage: "Мое супер приложение",
Commands: []*replyme.Command{
{
Name: "hello",
Usage: "Выводит `Hello, World!` на экран",
Action: func(ctx *replyme.Context) error {
ctx.Print("Hello, World!")
return nil
},
},
},
}
После этого запустите Replyme
:
err := replyme.Run(app)
if err != nil {
panic(err)
}
Готово! Вы молодец!
Полный код
package main
import "github.com/danyasatsuk/replyme"
func main() {
app := &replyme.App{
Name: "mysuperapp",
Usage: "Мое супер приложение",
Commands: []*replyme.Command{
{
Name: "hello",
Usage: "Выводит `Hello, World!` на экран",
Action: func(ctx *replyme.Context) error {
ctx.Print("Hello, World!")
return nil
},
},
},
}
err := replyme.Run(app)
if err != nil {
panic(err)
}
}
Информация о проекте
Ссылка на Github: https://github.com/danyasatsuk/replyme
Пока что проект только в начальной стадии разработки, его стабильная версия еще не готова. Если вы столкнулись с ошибками, пожалуйста: создайте issue на Github, и дайте обратную информацию!
Top comments (0)