MCPcopy Index your code
hub / github.com/devspace-sh/devspace / injectSyncHelperFromBytes

Function injectSyncHelperFromBytes

pkg/devspace/services/inject/inject.go:290–385  ·  view source on GitHub ↗
(ctx context.Context, client kubectl.Client, pod *v1.Pod, container string, fi fs.FileInfo, bytesReader io.Reader)

Source from the content-addressed store, hash-verified

288}
289
290func injectSyncHelperFromBytes(ctx context.Context, client kubectl.Client, pod *v1.Pod, container string, fi fs.FileInfo, bytesReader io.Reader) error {
291 writerComplete := make(chan struct{})
292 readerComplete := make(chan struct{})
293
294 // Compress the sync helper and then copy it to the container
295 reader, writer := io.Pipe()
296 var (
297 retErr error
298 setRetErr sync.Once
299 )
300
301 go func() {
302 defer close(readerComplete)
303 defer func() {
304 if r := recover(); r != nil {
305 setRetErr.Do(func() {
306 retErr = fmt.Errorf("%v", r)
307 })
308 }
309 }()
310 defer reader.Close()
311
312 err := client.CopyFromReader(ctx, pod, container, "/tmp", reader)
313 setRetErr.Do(func() {
314 retErr = err
315 })
316 }()
317
318 go func() {
319 defer close(writerComplete)
320 defer func() {
321 if r := recover(); r != nil {
322 setRetErr.Do(func() {
323 retErr = fmt.Errorf("%v", r)
324 })
325 }
326 }()
327 defer writer.Close()
328
329 // Use compression
330 gw := gzip.NewWriter(writer)
331 defer gw.Close()
332
333 // Create tar writer
334 tarWriter := tar.NewWriter(gw)
335 defer tarWriter.Close()
336
337 hdr, err := tar.FileInfoHeader(fi, DevSpaceHelperTempFolder)
338 if err != nil {
339 setRetErr.Do(func() {
340 retErr = err
341 })
342 return
343 }
344
345 hdr.Name = "devspacehelper"
346
347 // Set permissions correctly

Callers 2

InjectDevSpaceHelperFunction · 0.85
injectSyncHelperFunction · 0.85

Calls 5

closeFunction · 0.85
CloseMethod · 0.65
CopyFromReaderMethod · 0.65
CopyMethod · 0.65
ErrorfMethod · 0.45

Tested by

no test coverage detected