@@ -17,13 +17,62 @@ const SolidityVersionString = ">=0.6.0 <8.0.0"
17
17
// SolidityABIString indicates ABIEncoderV2 use.
18
18
const SolidityABIString = "pragma experimental ABIEncoderV2;"
19
19
20
+ type compileFlag string
21
+
22
+ const (
23
+ compileFlagLink compileFlag = "link"
24
+ compileFlagCompile compileFlag = "compile"
25
+ )
26
+
27
+ func fromCompileFlag (f compileFlag ) string {
28
+ return string (f )
29
+ }
30
+
31
+ func toCompileFlag (s string ) (compileFlag , error ) {
32
+ switch s {
33
+ case fromCompileFlag (compileFlagLink ):
34
+ return compileFlagLink , nil
35
+ case fromCompileFlag (compileFlagCompile ):
36
+ return compileFlagCompile , nil
37
+ }
38
+
39
+ return compileFlagCompile , fmt .Errorf ("unknown compile flag %s, allowed values are <link, compile>" , s )
40
+ }
41
+
42
+ type generateFlag string
43
+
44
+ const (
45
+ generateFlagAll generateFlag = "all"
46
+ generateFlagDecoder generateFlag = "decoder"
47
+ generateFlagEncoder generateFlag = "encoder"
48
+ )
49
+
50
+ func fromGenerateFlag (f generateFlag ) string {
51
+ return string (f )
52
+ }
53
+
54
+ func toGenerateFlag (s string ) (generateFlag , error ) {
55
+ switch s {
56
+ case fromGenerateFlag (generateFlagAll ):
57
+ return generateFlagAll , nil
58
+ case fromGenerateFlag (generateFlagDecoder ):
59
+ return generateFlagDecoder , nil
60
+ case fromGenerateFlag (generateFlagEncoder ):
61
+ return generateFlagEncoder , nil
62
+ }
63
+
64
+ return generateFlagAll , fmt .Errorf ("unknown generate flag %s, allowed values are <all, decoder, encoder>" , s )
65
+ }
66
+
20
67
// Generator generates Solidity code from .proto files.
21
68
type Generator struct {
22
69
request * pluginpb.CodeGeneratorRequest
23
70
enumMaxes map [string ]int
24
71
25
72
versionString string
26
73
licenseString string
74
+ compileFlag compileFlag
75
+ generateFlag generateFlag
27
76
}
28
77
29
78
// New initializes a new Generator.
@@ -36,6 +85,9 @@ func New(request *pluginpb.CodeGeneratorRequest, versionString string) *Generato
36
85
g .versionString = versionString
37
86
g .licenseString = "CC0"
38
87
88
+ g .compileFlag = compileFlagCompile
89
+ g .generateFlag = generateFlagAll
90
+
39
91
return g
40
92
}
41
93
@@ -53,6 +105,32 @@ func (g *Generator) ParseParameters() error {
53
105
switch key {
54
106
case "license" :
55
107
g .licenseString = value
108
+ case "compile" :
109
+ flag , err := toCompileFlag (value )
110
+ if err != nil {
111
+ return err
112
+ }
113
+ g .compileFlag = flag
114
+
115
+ // TODO implement these
116
+ switch flag {
117
+ case compileFlagLink :
118
+ return fmt .Errorf ("unimplemented feature %s" , flag )
119
+ }
120
+ case "generate" :
121
+ flag , err := toGenerateFlag (value )
122
+ if err != nil {
123
+ return err
124
+ }
125
+ g .generateFlag = flag
126
+
127
+ // TODO implement these
128
+ switch flag {
129
+ case
130
+ generateFlagDecoder ,
131
+ generateFlagEncoder :
132
+ return fmt .Errorf ("unimplemented feature %s" , flag )
133
+ }
56
134
default :
57
135
return errors .New ("unrecognized option " + key )
58
136
}
0 commit comments