Миграция v2 -> v3
#
CLI#
Инициализация опций swipev2
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
.