MCPcopy Index your code
hub / github.com/GoEdgeLab/EdgeNode / Run

Method Run

internal/utils/unzip.go:25–98  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

23}
24
25func (this *Unzip) Run() error {
26 if len(this.zipFile) == 0 {
27 return errors.New("zip file should not be empty")
28 }
29 if len(this.targetDir) == 0 {
30 return errors.New("target dir should not be empty")
31 }
32
33 reader, err := zip.OpenReader(this.zipFile)
34 if err != nil {
35 return err
36 }
37
38 defer func() {
39 _ = reader.Close()
40 }()
41
42 for _, file := range reader.File {
43 info := file.FileInfo()
44 filename := file.Name
45 if len(this.stripPrefix) > 0 {
46 filename = strings.TrimPrefix(filename, this.stripPrefix)
47 }
48 target := this.targetDir + "/" + filename
49
50 // 目录
51 if info.IsDir() {
52 stat, err := os.Stat(target)
53 if err != nil {
54 if !os.IsNotExist(err) {
55 return err
56 } else {
57 err = os.MkdirAll(target, info.Mode())
58 if err != nil {
59 return err
60 }
61 }
62 } else if !stat.IsDir() {
63 err = os.MkdirAll(target, info.Mode())
64 if err != nil {
65 return err
66 }
67 }
68 continue
69 }
70
71 // 文件
72 err := func(file *zip.File, target string) error {
73 fileReader, err := file.Open()
74 if err != nil {
75 return err
76 }
77 defer func() {
78 _ = fileReader.Close()
79 }()
80
81 fileWriter, err := os.OpenFile(target, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, file.FileInfo().Mode())
82 if err != nil {

Callers 15

installSystemdServiceMethod · 0.45
runActionMethod · 0.45
runActionSingleIPMethod · 0.45
runActionSingleIPMethod · 0.45
InitMethod · 0.45
runActionSingleIPMethod · 0.45
InitMethod · 0.45
CleanPrefixMethod · 0.45
CleanMatchKeyMethod · 0.45
CleanMatchPrefixMethod · 0.45
CleanAllMethod · 0.45
StatMethod · 0.45

Calls 5

CopyMethod · 0.80
OpenReaderMethod · 0.65
CloseMethod · 0.65
StatMethod · 0.65
OpenMethod · 0.45

Tested by

no test coverage detected