github.com/lino-network/lino@v0.6.11/x/reputation/repv2/encodergen/encodergen.py (about) 1 #!/usr/bin/env python 2 3 import sys 4 5 # This file was called GobCodeGen, but we found some un-deterministic spots in 6 # gob, so we abandon it. As you can see, now it's a amigo(cdc) 7 # marshal/unmarshal warpper. 8 9 template = """ 10 func decode$TYPE(data []byte) *TYPE { 11 if data == nil { 12 return nil 13 } 14 rst := &TYPE{} 15 cdc.MustUnmarshalBinaryBare(data, rst) 16 return rst 17 } 18 19 func encode$TYPE(dt *TYPE) []byte { 20 if dt == nil { 21 return nil 22 } 23 rst := cdc.MustMarshalBinaryBare(dt) 24 return []byte(rst) 25 } 26 """ 27 28 structs = ['userMeta', 'roundMeta', 'roundPostMeta', 'gameMeta'] 29 30 31 def cap(word): 32 return word[0].upper() + word[1:] 33 34 35 def main(): 36 if len(sys.argv) < 2: 37 for type_name in structs: 38 tmp = template.replace("$TYPE", cap(type_name)) 39 print tmp.replace("TYPE", type_name) 40 else: 41 type_name = sys.argv[1] 42 tmp = template.replace("$TYPE", cap(type_name)) 43 print tmp.replace("TYPE", type_name) 44 45 46 if __name__ == '__main__': 47 main()