github.com/Finschia/finschia-sdk@v0.48.1/server/rosetta.go (about) 1 package server 2 3 import ( 4 "fmt" 5 6 "github.com/spf13/cobra" 7 8 "github.com/Finschia/finschia-sdk/codec" 9 codectypes "github.com/Finschia/finschia-sdk/codec/types" 10 "github.com/Finschia/finschia-sdk/server/rosetta" 11 ) 12 13 // RosettaCommand builds the rosetta root command given 14 // a protocol buffers serializer/deserializer 15 func RosettaCommand(ir codectypes.InterfaceRegistry, cdc codec.Codec) *cobra.Command { 16 cmd := &cobra.Command{ 17 Use: "rosetta", 18 Short: "spin up a rosetta server", 19 RunE: func(cmd *cobra.Command, args []string) error { 20 cmd.Println("WARNING: The Rosetta server is still a beta feature. Please do not use it in production.") 21 22 conf, err := rosetta.FromFlags(cmd.Flags()) 23 if err != nil { 24 return err 25 } 26 27 protoCodec, ok := cdc.(*codec.ProtoCodec) 28 if !ok { 29 return fmt.Errorf("exoected *codec.ProtoMarshaler, got: %T", cdc) 30 } 31 conf.WithCodec(ir, protoCodec) 32 33 rosettaSrv, err := rosetta.ServerFromConfig(conf) 34 if err != nil { 35 return err 36 } 37 return rosettaSrv.Start() 38 }, 39 } 40 rosetta.SetFlags(cmd.Flags()) 41 42 return cmd 43 }