feat: initial goget release — modern IPv6-first download utility

This commit is contained in:
2026-06-26 21:21:58 +02:00
commit 53db81e1f7
147 changed files with 45931 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
//go:build linux || freebsd
// +build linux freebsd
package archive
import (
"compress/gzip"
"fmt"
"io"
)
type tarGzExtractor struct {
*BaseExtractor
tar *tarExtractor
}
func NewTarGzExtractor() *tarGzExtractor {
return &tarGzExtractor{
BaseExtractor: NewBaseExtractor("tar.gz", []string{".tar.gz", ".tgz"}),
tar: NewTarExtractor(),
}
}
// Extract extracts a tar.gz archive into destDir
func (t *tarGzExtractor) Extract(r io.Reader, destDir string) error {
// Step 1: Create gzip reader for decompression
gzr, err := gzip.NewReader(r)
if err != nil {
return fmt.Errorf("failed to create gzip reader: %w", err)
}
defer func() {
if cerr := gzr.Close(); cerr != nil && err == nil {
err = cerr
}
}()
// Step 2: Extract tar from decompressed stream
// gzr implements io.Reader that returns DECOMPRESSED data
return t.tar.Extract(gzr, destDir)
}
func init() { Register(NewTarGzExtractor()) }