MCPcopy Create free account
hub / github.com/goadesign/goa / makeFlags

Function makeFlags

grpc/codegen/client_cli.go:170–229  ·  view source on GitHub ↗
(e *EndpointData, args []*InitArgData)

Source from the content-addressed store, hash-verified

168}
169
170func makeFlags(e *EndpointData, args []*InitArgData) ([]*cli.FlagData, *cli.BuildFunctionData) {
171 var (
172 fdata = make([]*cli.FieldData, 0, len(args))
173 flags = make([]*cli.FlagData, len(args))
174 params = make([]string, len(args))
175 pInitArgs = make([]*codegen.InitArgData, len(args))
176 check bool
177 pinit *cli.PayloadInitData
178 )
179 for i, arg := range args {
180 pInitArgs[i] = &codegen.InitArgData{
181 Name: arg.Name,
182 FieldName: arg.FieldName,
183 FieldType: arg.FieldType,
184 Type: arg.Type,
185 }
186
187 f := cli.NewFlagData(e.ServiceName, e.Method.Name, arg.Name, arg.TypeName, arg.Description, arg.Required, arg.Example, arg.DefaultValue)
188 flags[i] = f
189 params[i] = f.FullName
190 code, chek := cli.FieldLoadCode(f, arg.Name, arg.TypeName, arg.Validate, arg.DefaultValue, e.PayloadType, e.PayloadRef)
191 check = check || chek
192 tn := arg.TypeRef
193 if f.Type == "JSON" {
194 // We need to declare the variable without
195 // a pointer to be able to unmarshal the JSON
196 // using its address.
197 tn = arg.TypeName
198 }
199 fdata = append(fdata, &cli.FieldData{
200 Name: arg.Name,
201 VarName: arg.Name,
202 TypeRef: tn,
203 Init: code,
204 })
205 }
206 if e.Method.PayloadRef == "" {
207 return flags, nil
208 }
209 if e.Request.ServerConvert != nil {
210 pinit = &cli.PayloadInitData{
211 Code: e.Request.ServerConvert.Init.Code,
212 ReturnIsStruct: e.Request.ServerConvert.Init.ReturnIsStruct,
213 ReturnTypePkg: e.Request.ServerConvert.Init.ReturnTypePkg,
214 Args: pInitArgs,
215 }
216 }
217
218 return flags, &cli.BuildFunctionData{
219 Name: "Build" + e.Method.VarName + "Payload",
220 ActualParams: params,
221 FormalParams: params,
222 ServiceName: e.ServiceName,
223 MethodName: e.Method.Name,
224 ResultType: e.PayloadRef,
225 Fields: fdata,
226 PayloadInit: pinit,
227 CheckErr: check,

Callers 1

buildFlagsFunction · 0.70

Calls 2

NewFlagDataFunction · 0.92
FieldLoadCodeFunction · 0.92

Tested by

no test coverage detected