diff --git a/ignite/pkg/placeholder/tracer.go b/ignite/pkg/placeholder/tracer.go index 49444811a6..d92c380ddb 100644 --- a/ignite/pkg/placeholder/tracer.go +++ b/ignite/pkg/placeholder/tracer.go @@ -43,6 +43,7 @@ type Replacer interface { Replace(content, placeholder, replacement string) string ReplaceAll(content, placeholder, replacement string) string ReplaceOnce(content, placeholder, replacement string) string + ReplaceIfExists(content, placeholder, replacement string) string AppendMiscError(miscError string) } @@ -81,6 +82,13 @@ func (t *Tracer) ReplaceOnce(content, placeholder, replacement string) string { return content } +func (t *Tracer) ReplaceIfExists(content, placeholder, replacement string) string { + if !strings.Contains(content, replacement) { + strings.Replace(content, placeholder, replacement, 1) + } + return content +} + // AppendMiscError allows to track errors not related to missing placeholders during file modification func (t *Tracer) AppendMiscError(miscError string) { t.miscErrors = append(t.miscErrors, miscError) diff --git a/ignite/templates/typed/map/stargate.go b/ignite/templates/typed/map/stargate.go index c86b8b0886..bbb5e1e120 100644 --- a/ignite/templates/typed/map/stargate.go +++ b/ignite/templates/typed/map/stargate.go @@ -588,10 +588,9 @@ func handlerModify(replacer placeholder.Replacer, opts *typed.Options) genny.Run if err != nil { return err } - // Set once the MsgServer definition if it is not defined yet replacementMsgServer := `msgServer := keeper.NewMsgServerImpl(k)` - content := replacer.ReplaceOnce(f.String(), typed.PlaceholderHandlerMsgServer, replacementMsgServer) + content := replacer.ReplaceIfExists(f.String(), typed.PlaceholderHandlerMsgServer, replacementMsgServer) templateHandlers := `case *types.MsgCreate%[2]v: res, err := msgServer.Create%[2]v(sdk.WrapSDKContext(ctx), msg)