@@ -140,109 +140,14 @@ func serveDevfile(c *gin.Context) {
140
140
func serveDevfileStarterProject (c * gin.Context ) {
141
141
devfileName := c .Param ("devfileName" )
142
142
starterProjectName := c .Param ("starterProjectName" )
143
+ devfileBytes := fetchDevfile (c , devfileName )
143
144
144
- /** source from serveDevfile **/
145
- devfileBytes , err := func (devfileName string ) ([]byte , error ) {
146
- var index []indexSchema.Schema
147
- bytes , err := ioutil .ReadFile (indexPath )
148
- if err != nil {
149
- return bytes , err
150
- }
151
- err = json .Unmarshal (bytes , & index )
152
- if err != nil {
153
- return make ([]byte , 0 ), err
154
- }
155
-
156
- // Reuse 'bytes' for devfile bytes
157
- bytes = make ([]byte , 0 )
158
- for _ , devfileIndex := range index {
159
- if devfileIndex .Name == devfileName {
160
- if devfileIndex .Type == indexSchema .StackDevfileType {
161
- bytes , err = pullStackFromRegistry (devfileIndex )
162
- } else {
163
- // Retrieve the sample devfile stored under /registry/samples/<devfile>
164
- sampleDevfilePath := path .Join (samplesPath , devfileIndex .Name , devfileName )
165
- if _ , err = os .Stat (sampleDevfilePath ); err == nil {
166
- bytes , err = ioutil .ReadFile (sampleDevfilePath )
167
- }
168
- }
169
-
170
- break
171
- }
172
- }
173
-
174
- return bytes , err
175
- }(devfileName )
176
- if err != nil {
177
- log .Print (err .Error ())
178
- c .JSON (http .StatusInternalServerError , gin.H {
179
- "error" : err .Error (),
180
- "status" : fmt .Sprintf ("failed to pull the devfile of %s" , devfileName ),
181
- })
182
- return
183
- } else if err == nil && devfileBytes == nil {
184
- c .JSON (http .StatusNotFound , gin.H {
185
- "status" : fmt .Sprintf ("the devfile of %s didn't exist" , devfileName ),
186
- })
145
+ if len (devfileBytes ) == 0 {
146
+ // fetchDevfile was unsuccessful (error or not found)
187
147
return
148
+ } else {
149
+ // TODO: Add fetch start project and set response source.
188
150
}
189
-
190
- // devfileBytes := func(c *gin.Context, devfileName string) []byte {
191
- // var index []indexSchema.Schema
192
- // bytes, err := ioutil.ReadFile(indexPath)
193
- // if err != nil {
194
- // log.Print(err.Error())
195
- // c.JSON(http.StatusInternalServerError, gin.H{
196
- // "error": err.Error(),
197
- // "status": fmt.Sprintf("failed to pull the devfile of %s", devfileName),
198
- // })
199
- // return make([]byte, 0)
200
- // }
201
- // err = json.Unmarshal(bytes, &index)
202
- // if err != nil {
203
- // log.Print(err.Error())
204
- // c.JSON(http.StatusInternalServerError, gin.H{
205
- // "error": err.Error(),
206
- // "status": fmt.Sprintf("failed to pull the devfile of %s", devfileName),
207
- // })
208
- // return make([]byte, 0)
209
- // }
210
- //
211
- // // Reuse 'bytes' for devfile bytes
212
- // bytes = make([]byte, 0)
213
- // for _, devfileIndex := range index {
214
- // if devfileIndex.Name == devfileName {
215
- // var bytes []byte
216
- // if devfileIndex.Type == indexSchema.StackDevfileType {
217
- // bytes, err = pullStackFromRegistry(devfileIndex)
218
- // } else {
219
- // // Retrieve the sample devfile stored under /registry/samples/<devfile>
220
- // sampleDevfilePath := path.Join(samplesPath, devfileIndex.Name, devfileName)
221
- // if _, err = os.Stat(sampleDevfilePath); err == nil {
222
- // bytes, err = ioutil.ReadFile(sampleDevfilePath)
223
- // }
224
- // }
225
- // if err != nil {
226
- // log.Print(err.Error())
227
- // c.JSON(http.StatusInternalServerError, gin.H{
228
- // "error": err.Error(),
229
- // "status": fmt.Sprintf("failed to pull the devfile of %s", devfileName),
230
- // })
231
- // return make([]byte, 0)
232
- // }
233
-
234
- // return bytes
235
- // }
236
- // }
237
-
238
- // c.JSON(http.StatusNotFound, gin.H{
239
- // "status": fmt.Sprintf("the devfile of %s didn't exist", devfileName),
240
- // })
241
-
242
- // return bytes
243
- // }(c, devfileName)
244
-
245
- /****/
246
151
}
247
152
248
153
func serveUI (c * gin.Context ) {
@@ -366,3 +271,93 @@ func buildIndexAPIResponse(c *gin.Context) {
366
271
}
367
272
}
368
273
}
274
+
275
+ // fetchDevfile retrieves a specified devfile stored under /registry/**/<devfileName>
276
+ func fetchDevfile (c * gin.Context , devfileName string ) []byte {
277
+ var index []indexSchema.Schema
278
+ bytes , err := ioutil .ReadFile (indexPath )
279
+ if err != nil {
280
+ log .Print (err .Error ())
281
+ c .JSON (http .StatusInternalServerError , gin.H {
282
+ "error" : err .Error (),
283
+ "status" : fmt .Sprintf ("failed to pull the devfile of %s" , devfileName ),
284
+ })
285
+ return make ([]byte , 0 )
286
+ }
287
+ err = json .Unmarshal (bytes , & index )
288
+ if err != nil {
289
+ log .Print (err .Error ())
290
+ c .JSON (http .StatusInternalServerError , gin.H {
291
+ "error" : err .Error (),
292
+ "status" : fmt .Sprintf ("failed to pull the devfile of %s" , devfileName ),
293
+ })
294
+ return make ([]byte , 0 )
295
+ }
296
+
297
+ // Reuse 'bytes' for devfile bytes, assign empty
298
+ bytes = make ([]byte , 0 )
299
+ for _ , devfileIndex := range index {
300
+ if devfileIndex .Name == devfileName {
301
+ var bytes []byte
302
+ if devfileIndex .Type == indexSchema .StackDevfileType {
303
+ bytes , err = pullStackFromRegistry (devfileIndex )
304
+ } else {
305
+ // Retrieve the sample devfile stored under /registry/samples/<devfile>
306
+ sampleDevfilePath := path .Join (samplesPath , devfileIndex .Name , devfileName )
307
+ if _ , err = os .Stat (sampleDevfilePath ); err == nil {
308
+ bytes , err = ioutil .ReadFile (sampleDevfilePath )
309
+ }
310
+ }
311
+ if err != nil {
312
+ log .Print (err .Error ())
313
+ c .JSON (http .StatusInternalServerError , gin.H {
314
+ "error" : err .Error (),
315
+ "status" : fmt .Sprintf ("failed to pull the devfile of %s" , devfileName ),
316
+ })
317
+ return make ([]byte , 0 )
318
+ }
319
+
320
+ return bytes
321
+ }
322
+ }
323
+
324
+ c .JSON (http .StatusNotFound , gin.H {
325
+ "status" : fmt .Sprintf ("the devfile of %s didn't exist" , devfileName ),
326
+ })
327
+
328
+ return bytes
329
+ }
330
+
331
+ /** source from serveDevfile **/
332
+ // func fetchDevfile(devfileName string) ([]byte, error) {
333
+ // var index []indexSchema.Schema
334
+ // bytes, err := ioutil.ReadFile(indexPath)
335
+ // if err != nil {
336
+ // return bytes, err
337
+ // }
338
+ // err = json.Unmarshal(bytes, &index)
339
+ // if err != nil {
340
+ // return make([]byte, 0), err
341
+ // }
342
+
343
+ // // Reuse 'bytes' for devfile bytes
344
+ // bytes = make([]byte, 0)
345
+ // for _, devfileIndex := range index {
346
+ // if devfileIndex.Name == devfileName {
347
+ // if devfileIndex.Type == indexSchema.StackDevfileType {
348
+ // bytes, err = pullStackFromRegistry(devfileIndex)
349
+ // } else {
350
+ // // Retrieve the sample devfile stored under /registry/samples/<devfile>
351
+ // sampleDevfilePath := path.Join(samplesPath, devfileIndex.Name, devfileName)
352
+ // if _, err = os.Stat(sampleDevfilePath); err == nil {
353
+ // bytes, err = ioutil.ReadFile(sampleDevfilePath)
354
+ // }
355
+ // }
356
+
357
+ // break
358
+ // }
359
+ // }
360
+
361
+ // return bytes, err
362
+ // }
363
+ /****/
0 commit comments