CodegenDisabler という Goa v3 プラグインを作った

codegendisablerGoa v3プラグインで、コードジェネレータの部分的な無効化を可能にします。

github.com

プラグインの有効化

プラグインを有効にするには、下記のように codegendisabler の package を import します。

import (
  _ "github.com/tchssk/goaplugins/codegendisabler/gen/http/client/types/client_body_init"
  . "goa.design/goa/v3/dsl"
)

このコードは、 gen/http/<service>/client/types.goというファイル にコード生成を行う処理の内、 client-body-init というセクションテンプレート名の箇所を無効化します。 codegendisabler 配下の package が、生成されるファイル名・生成を行うセクションテンプレート名に対応しています。

一般的な使い方

Goa が生成するコードには HTTP クライアントと HTTP サーバが含まれますが、 サーバ側 (もしくはクライアント側) の生成だけを無効化するという使い方ができます。

HTTP クライアントコード生成の無効化

import (
  _ "github.com/tchssk/goaplugins/codegendisabler/gen/http/cli/cli"
  _ "github.com/tchssk/goaplugins/codegendisabler/gen/http/client"
)

HTTP サーバコード生成の無効化

import (
  _ "github.com/tchssk/goaplugins/codegendisabler/gen/http/server"
)