MCPcopy Create free account
hub / github.com/jetify-com/devbox / Extract

Function Extract

internal/pullbox/tar/tar.go:19–52  ·  view source on GitHub ↗

extract decompresses a tar file and saves it to a tmp directory

(data []byte)

Source from the content-addressed store, hash-verified

17
18// extract decompresses a tar file and saves it to a tmp directory
19func Extract(data []byte) (string, error) {
20 tempFile, err := os.CreateTemp("", "temp.tar.gz")
21 if err != nil {
22 return "", err
23 }
24 defer os.Remove(tempFile.Name())
25 defer tempFile.Close()
26
27 _, err = tempFile.Write(data)
28 if err != nil {
29 return "", err
30 }
31
32 tempDir, err := os.MkdirTemp("", "temp")
33 if err != nil {
34 return "", err
35 }
36
37 cmd := exec.Command("tar", "-xf", tempFile.Name(), "-C", tempDir)
38
39 if err = cmd.Run(); err != nil {
40 var exitErr *exec.ExitError
41 if errors.As(err, &exitErr) {
42 waitStatus := exitErr.Sys().(syscall.WaitStatus)
43 return "", fmt.Errorf(
44 "tar extraction failed with exit code: %d",
45 waitStatus.ExitStatus(),
46 )
47 }
48 return "", err
49 }
50
51 return tempDir, nil
52}
53
54func Compress(dir string) (string, error) {
55 tmpDir, err := fileutil.CreateDevboxTempDir()

Callers 2

PullMethod · 0.92
PullToTmpFunction · 0.92

Calls 4

WriteMethod · 0.80
CommandMethod · 0.80
RunMethod · 0.65
RemoveMethod · 0.45

Tested by

no test coverage detected