@@ -19,7 +19,6 @@ func ExtractTarGz(archive *os.File, targetDir string) error {
1919 Archival : archiver.Tar {},
2020 }
2121
22- // Create target directory with proper permissions
2322 if err := os .MkdirAll (targetDir , constants .DefaultDirPerms ); err != nil {
2423 logger .Error ("Failed to create target directory" , logrus.Fields {
2524 "directory" : targetDir ,
@@ -28,68 +27,34 @@ func ExtractTarGz(archive *os.File, targetDir string) error {
2827 return fmt .Errorf ("failed to create target directory: %w" , err )
2928 }
3029
31- // Ensure target directory has proper permissions
3230 if err := os .Chmod (targetDir , constants .DefaultDirPerms ); err != nil {
33- logger .Error ("Failed to set target directory permissions" , logrus.Fields {
34- "directory" : targetDir ,
35- "error" : err ,
36- })
3731 return fmt .Errorf ("failed to set target directory permissions: %w" , err )
3832 }
3933
40- // Create a map to store symlinks for later creation
41- symlinks := make (map [string ]string )
42-
4334 handler := func (ctx context.Context , f archiver.File ) error {
4435 path := filepath .Join (targetDir , f .NameInArchive )
4536
4637 switch f .IsDir () {
4738 case true :
48- // Create directory with proper permissions
4939 if err := os .MkdirAll (path , constants .DefaultDirPerms ); err != nil {
50- logger .Error ("Failed to create directory" , logrus.Fields {
51- "directory" : path ,
52- "error" : err ,
53- })
5440 return fmt .Errorf ("failed to create directory %s: %w" , path , err )
5541 }
56- // Ensure directory has proper permissions
5742 if err := os .Chmod (path , constants .DefaultDirPerms ); err != nil {
58- logger .Error ("Failed to set directory permissions" , logrus.Fields {
59- "directory" : path ,
60- "error" : err ,
61- })
6243 return fmt .Errorf ("failed to set directory permissions for %s: %w" , path , err )
6344 }
6445
6546 case false :
66- // If it's a symlink, store it for later
67- if f .LinkTarget != "" {
68- symlinks [path ] = f .LinkTarget
69- return nil
70- }
71-
72- // Ensure parent directory exists with proper permissions
7347 parentDir := filepath .Dir (path )
7448 if err := os .MkdirAll (parentDir , constants .DefaultDirPerms ); err != nil {
75- logger .Error ("Failed to create parent directory" , logrus.Fields {
76- "directory" : parentDir ,
77- "error" : err ,
78- })
7949 return fmt .Errorf ("failed to create parent directory %s: %w" , parentDir , err )
8050 }
8151 if err := os .Chmod (parentDir , constants .DefaultDirPerms ); err != nil {
82- logger .Error ("Failed to set parent directory permissions" , logrus.Fields {
83- "directory" : parentDir ,
84- "error" : err ,
85- })
8652 return fmt .Errorf ("failed to set parent directory permissions for %s: %w" , parentDir , err )
8753 }
8854
89- // Create file with proper permissions
9055 fileMode := os .FileMode (constants .DefaultFilePerms )
91- if f .Mode ()& 0111 != 0 { // If the file is executable in the archive
92- fileMode = os .FileMode (constants .DefaultDirPerms ) // Set executable bits using DefaultDirPerms
56+ if f .Mode ()& 0111 != 0 {
57+ fileMode = os .FileMode (constants .DefaultDirPerms )
9358 }
9459 w , err := os .OpenFile (path , os .O_RDWR | os .O_CREATE | os .O_TRUNC , fileMode )
9560 if err != nil {
@@ -113,12 +78,7 @@ func ExtractTarGz(archive *os.File, targetDir string) error {
11378 return fmt .Errorf ("failed to copy file contents for %s: %w" , path , err )
11479 }
11580
116- // Ensure file has proper permissions
11781 if err := os .Chmod (path , fileMode ); err != nil {
118- logger .Error ("Failed to set file permissions" , logrus.Fields {
119- "file" : path ,
120- "error" : err ,
121- })
12282 return fmt .Errorf ("failed to set file permissions for %s: %w" , path , err )
12383 }
12484 }
@@ -128,50 +88,17 @@ func ExtractTarGz(archive *os.File, targetDir string) error {
12888
12989 err := format .Extract (context .Background (), archive , nil , handler )
13090 if err != nil {
91+ logger .Error ("Failed to extract archive" , logrus.Fields {"error" : err })
13192 return fmt .Errorf ("failed to extract archive: %w" , err )
13293 }
13394
134- // Create symlinks after all files have been extracted
135- for path , target := range symlinks {
136- // Remove any existing file/symlink
137- os .Remove (path )
138-
139- // Ensure parent directory exists with proper permissions
140- parentDir := filepath .Dir (path )
141- if err := os .MkdirAll (parentDir , constants .DefaultDirPerms ); err != nil {
142- logger .Error ("Failed to create symlink parent directory" , logrus.Fields {
143- "directory" : parentDir ,
144- "error" : err ,
145- })
146- return fmt .Errorf ("failed to create symlink parent directory %s: %w" , parentDir , err )
147- }
148- if err := os .Chmod (parentDir , constants .DefaultDirPerms ); err != nil {
149- logger .Error ("Failed to set symlink parent directory permissions" , logrus.Fields {
150- "directory" : parentDir ,
151- "error" : err ,
152- })
153- return fmt .Errorf ("failed to set symlink parent directory permissions for %s: %w" , parentDir , err )
154- }
155-
156- // Create the symlink
157- if err := os .Symlink (target , path ); err != nil {
158- logger .Error ("Failed to create symlink" , logrus.Fields {
159- "path" : path ,
160- "target" : target ,
161- "error" : err ,
162- })
163- return fmt .Errorf ("failed to create symlink %s -> %s: %w" , path , target , err )
164- }
165- }
166-
16795 return nil
16896}
16997
17098// ExtractZip extracts a ZIP archive to the target directory
17199func ExtractZip (zipPath string , targetDir string ) error {
172100 format := archiver.Zip {}
173101
174- // Create target directory with proper permissions
175102 if err := os .MkdirAll (targetDir , constants .DefaultDirPerms ); err != nil {
176103 logger .Error ("Failed to create target directory" , logrus.Fields {
177104 "directory" : targetDir ,
@@ -180,12 +107,7 @@ func ExtractZip(zipPath string, targetDir string) error {
180107 return fmt .Errorf ("failed to create target directory: %w" , err )
181108 }
182109
183- // Ensure target directory has proper permissions
184110 if err := os .Chmod (targetDir , constants .DefaultDirPerms ); err != nil {
185- logger .Error ("Failed to set target directory permissions" , logrus.Fields {
186- "directory" : targetDir ,
187- "error" : err ,
188- })
189111 return fmt .Errorf ("failed to set target directory permissions: %w" , err )
190112 }
191113
@@ -194,79 +116,25 @@ func ExtractZip(zipPath string, targetDir string) error {
194116
195117 switch f .IsDir () {
196118 case true :
197- // Create directory with proper permissions
198119 if err := os .MkdirAll (path , constants .DefaultDirPerms ); err != nil {
199- logger .Error ("Failed to create directory" , logrus.Fields {
200- "directory" : path ,
201- "error" : err ,
202- })
203120 return fmt .Errorf ("failed to create directory %s: %w" , path , err )
204121 }
205- // Ensure directory has proper permissions
206122 if err := os .Chmod (path , constants .DefaultDirPerms ); err != nil {
207- logger .Error ("Failed to set directory permissions" , logrus.Fields {
208- "directory" : path ,
209- "error" : err ,
210- })
211123 return fmt .Errorf ("failed to set directory permissions for %s: %w" , path , err )
212124 }
213125
214126 case false :
215- // If it's a symlink
216- if f .LinkTarget != "" {
217- // Remove any existing file/symlink
218- os .Remove (path )
219-
220- // Ensure parent directory exists with proper permissions
221- parentDir := filepath .Dir (path )
222- if err := os .MkdirAll (parentDir , constants .DefaultDirPerms ); err != nil {
223- logger .Error ("Failed to create symlink parent directory" , logrus.Fields {
224- "directory" : parentDir ,
225- "error" : err ,
226- })
227- return fmt .Errorf ("failed to create symlink parent directory %s: %w" , parentDir , err )
228- }
229- if err := os .Chmod (parentDir , constants .DefaultDirPerms ); err != nil {
230- logger .Error ("Failed to set symlink parent directory permissions" , logrus.Fields {
231- "directory" : parentDir ,
232- "error" : err ,
233- })
234- return fmt .Errorf ("failed to set symlink parent directory permissions for %s: %w" , parentDir , err )
235- }
236-
237- // Create the symlink
238- if err := os .Symlink (f .LinkTarget , path ); err != nil {
239- logger .Error ("Failed to create symlink" , logrus.Fields {
240- "path" : path ,
241- "target" : f .LinkTarget ,
242- "error" : err ,
243- })
244- return fmt .Errorf ("failed to create symlink %s -> %s: %w" , path , f .LinkTarget , err )
245- }
246- return nil
247- }
248-
249- // Ensure parent directory exists with proper permissions
250127 parentDir := filepath .Dir (path )
251128 if err := os .MkdirAll (parentDir , constants .DefaultDirPerms ); err != nil {
252- logger .Error ("Failed to create parent directory" , logrus.Fields {
253- "directory" : parentDir ,
254- "error" : err ,
255- })
256129 return fmt .Errorf ("failed to create parent directory %s: %w" , parentDir , err )
257130 }
258131 if err := os .Chmod (parentDir , constants .DefaultDirPerms ); err != nil {
259- logger .Error ("Failed to set parent directory permissions" , logrus.Fields {
260- "directory" : parentDir ,
261- "error" : err ,
262- })
263132 return fmt .Errorf ("failed to set parent directory permissions for %s: %w" , parentDir , err )
264133 }
265134
266- // Create file with proper permissions
267135 fileMode := os .FileMode (constants .DefaultFilePerms )
268- if f .Mode ()& 0111 != 0 { // If the file is executable in the archive
269- fileMode = os .FileMode (constants .DefaultDirPerms ) // Set executable bits using DefaultDirPerms
136+ if f .Mode ()& 0111 != 0 {
137+ fileMode = os .FileMode (constants .DefaultDirPerms )
270138 }
271139 w , err := os .OpenFile (path , os .O_RDWR | os .O_CREATE | os .O_TRUNC , fileMode )
272140 if err != nil {
@@ -280,30 +148,17 @@ func ExtractZip(zipPath string, targetDir string) error {
280148 stream , err := f .Open ()
281149 if err != nil {
282150 w .Close ()
283- logger .Error ("Failed to open file stream" , logrus.Fields {
284- "file" : path ,
285- "error" : err ,
286- })
287151 return fmt .Errorf ("failed to open file stream for %s: %w" , path , err )
288152 }
289153
290154 _ , err = io .Copy (w , stream )
291155 stream .Close ()
292156 w .Close ()
293157 if err != nil {
294- logger .Error ("Failed to copy file contents" , logrus.Fields {
295- "file" : path ,
296- "error" : err ,
297- })
298158 return fmt .Errorf ("failed to copy file contents for %s: %w" , path , err )
299159 }
300160
301- // Ensure file has proper permissions
302161 if err := os .Chmod (path , fileMode ); err != nil {
303- logger .Error ("Failed to set file permissions" , logrus.Fields {
304- "file" : path ,
305- "error" : err ,
306- })
307162 return fmt .Errorf ("failed to set file permissions for %s: %w" , path , err )
308163 }
309164 }
0 commit comments