Перейти к основному содержимому
Version: 3.0.0

Миграция v2 -> v3

CLI#

Инициализация опций swipe#

v2

swipe gen --init

v3

swipe init

Запуск генерации#

v2

swipe gen ./pkg/...

или

swipe ./pkg/...

v3

swipe gen ./pkg/...

Файлы опций#

Файлы опции по-прежнему находятся в pkg/swipe, но в v3 появляются еще поддиректории, сейчас это gokit и config.

gokit и config это плагины Swipe.

  • gokit - плагин генерации транспорта с использованием GoKit.
  • config - плагин генерации загрузчика настроек из переменных среды.

Если в версии импорт файла с опциями был yourepo/repo/name/pkg/swipe то теперь он такой yourepo/repo/name/pkg/swipe/gokit или yourepo/repo/name/pkg/swipe/gokit

Генерация HTTP транспорта#

v2

//+build swipe
package transport
import (    "github.com/examples/example/pkg/interface/controller"    "github.com/examples/example/pkg/swipe")
func swipe() {    swipe.Build(        swipe.Service(            swipe.HTTPServer(),            swipe.JSONRPCEnable(),            swipe.ClientsEnable([]string{"js"}),                swipe.Interface((*controller.UserControllerIface)(nil), "user", gokit.ClientName("user")),            swipe.Interface((*controller.TaskControllerIface)(nil), "task", gokit.ClientName("task")),                swipe.MethodDefaultOptions(                swipe.Logging(true),                swipe.Instrumenting(true),            ),        ),              )}

v3

//+build swipe
package transport
import (    "github.com/examples/example/pkg/interface/controller"    "github.com/examples/example/pkg/swipe/gokit")
func swipe() {    gokit.Gokit(        gokit.HTTPServer(),        gokit.JSONRPCEnable(),        gokit.ClientsEnable([]string{"js"}),
        gokit.Interface((*controller.UserControllerIface)(nil), "user", gokit.ClientName("user")),        gokit.Interface((*controller.TaskControllerIface)(nil), "task", gokit.ClientName("task")),
        gokit.MethodDefaultOptions(            gokit.Logging(true),            gokit.Instrumenting(true),        ),    )}

Генерация загрузчика настроек#

v2

// +build swipe
package example
import (  . "github.com/swipe-io/swipe/v2")
func Swipe() {    swipe.Build(        ConfigEnv(&Config{}),    )}

v3

// +build swipe
package config
import "gitlab.com/example/example/pkg/swipe/config"
func swipe() {    config.Config(        config.Environment(            &Config{},        ),    )}

Генерация имени клиента#

В v3 изменилось поведение генерации имен клиентов, теперь параметр ns в опции Interface не влияет на имя клиента, для этого надо использовать опцию ClientName.

Имена сгенерированных файлов#

Изменились имена сгенерированных файлов, поэтому лучше удалить старые файлы с _gen.