Skip to content

Commit 6ca5591

Browse files
committed
refactor(lib): remove dead code and simplify extraction error handling
- Remove unreachable nil check in fetchExpectedChecksum since fetchReleaseDetails never returns (nil, nil) - Remove extractedFiles tracking in streamDownloadAndExtract as caller already handles directory cleanup on checksum failure - Simplify extraction loop with immediate returns instead of deferred error handling
1 parent 2db76dd commit 6ca5591

1 file changed

Lines changed: 10 additions & 31 deletions

File tree

lib/fetch.go

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -273,61 +273,43 @@ func streamDownloadAndExtract(url, destDir string) (string, error) {
273273
// Extract tar entries
274274
tr := tar.NewReader(gzr)
275275

276-
// Track extraction errors in goroutine-safe way for potential future parallelisation
277-
var extractErr error
278-
var extractedFiles []string
279-
280276
for {
281277
header, err := tr.Next()
282278
if err == io.EOF {
283279
break
284280
}
285281
if err != nil {
286-
extractErr = fmt.Errorf("reading tar header: %w", err)
287-
break
282+
fmt.Println() // Clear progress line
283+
return "", fmt.Errorf("reading tar header: %w", err)
288284
}
289285

290286
// Security: Validate path to prevent path traversal attacks
291287
target, err := sanitizeTarPath(absDestDir, header.Name)
292288
if err != nil {
293-
extractErr = err
294-
break
289+
fmt.Println() // Clear progress line
290+
return "", err
295291
}
296292

297293
switch header.Typeflag {
298294
case tar.TypeDir:
299295
if err := os.MkdirAll(target, 0755); err != nil {
300-
extractErr = fmt.Errorf("creating directory %s: %w", target, err)
301-
break
296+
fmt.Println() // Clear progress line
297+
return "", fmt.Errorf("creating directory %s: %w", target, err)
302298
}
303299
case tar.TypeReg:
304300
if err := os.MkdirAll(filepath.Dir(target), 0755); err != nil {
305-
extractErr = fmt.Errorf("creating parent directory for %s: %w", target, err)
306-
break
301+
fmt.Println() // Clear progress line
302+
return "", fmt.Errorf("creating parent directory for %s: %w", target, err)
307303
}
308304

309305
if err := extractFile(tr, target); err != nil {
310-
extractErr = err
311-
break
306+
fmt.Println() // Clear progress line
307+
return "", err
312308
}
313-
extractedFiles = append(extractedFiles, target)
314309
case tar.TypeSymlink, tar.TypeLink:
315310
// Skip symlinks and hard links for security - they could point outside destDir
316311
continue
317312
}
318-
319-
if extractErr != nil {
320-
break
321-
}
322-
}
323-
324-
// Clean up on extraction error
325-
if extractErr != nil {
326-
fmt.Println() // Clear progress line
327-
for _, f := range extractedFiles {
328-
os.Remove(f)
329-
}
330-
return "", extractErr
331313
}
332314

333315
fmt.Println() // Clear progress line
@@ -356,9 +338,6 @@ func fetchExpectedChecksum(release, tarballName string) (string, error) {
356338
if err != nil {
357339
return "", err
358340
}
359-
if releaseDetail == nil {
360-
return "", nil // API unavailable
361-
}
362341

363342
// Try asset digest first (newer releases)
364343
for _, asset := range releaseDetail.Assets {

0 commit comments

Comments
 (0)