mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-06 22:18:28 +00:00
Merge pull request #481 from smira/data-tar-gz-as-tar
Add workaround for reading data.tar.gz as data.tar
This commit is contained in:
@@ -5,6 +5,7 @@ gom 'github.com/cheggaaa/pb', :commit => '2c1b74620cc58a81ac152ee2d322e28c806d81
|
|||||||
gom 'github.com/DisposaBoy/JsonConfigReader', :commit => '33a99fdf1d5ee1f79b5077e9c06f955ad356d5f4'
|
gom 'github.com/DisposaBoy/JsonConfigReader', :commit => '33a99fdf1d5ee1f79b5077e9c06f955ad356d5f4'
|
||||||
gom 'github.com/gin-gonic/gin', :commit => 'b1758d3bfa09e61ddbc1c9a627e936eec6a170de'
|
gom 'github.com/gin-gonic/gin', :commit => 'b1758d3bfa09e61ddbc1c9a627e936eec6a170de'
|
||||||
gom 'github.com/go-ini/ini', :commit => 'afbd495e5aaea13597b5e14fe514ddeaa4d76fc3'
|
gom 'github.com/go-ini/ini', :commit => 'afbd495e5aaea13597b5e14fe514ddeaa4d76fc3'
|
||||||
|
gom 'github.com/h2non/filetype/matchers', :commit => '259d9d2c52bc90dbd7e1999f9da86ee0d104d0ff'
|
||||||
gom 'github.com/jlaffaye/ftp', :commit => 'fec71e62e457557fbe85cefc847a048d57815d76'
|
gom 'github.com/jlaffaye/ftp', :commit => 'fec71e62e457557fbe85cefc847a048d57815d76'
|
||||||
gom 'github.com/jmespath/go-jmespath', :commit => '0b12d6b521d83fc7f755e7cfc1b1fbdd35a01a74'
|
gom 'github.com/jmespath/go-jmespath', :commit => '0b12d6b521d83fc7f755e7cfc1b1fbdd35a01a74'
|
||||||
gom 'github.com/julienschmidt/httprouter', :commit => '46807412fe50aaceb73bb57061c2230fd26a1640'
|
gom 'github.com/julienschmidt/httprouter', :commit => '46807412fe50aaceb73bb57061c2230fd26a1640'
|
||||||
|
|||||||
+25
-9
@@ -2,16 +2,20 @@ package deb
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"archive/tar"
|
"archive/tar"
|
||||||
|
"bufio"
|
||||||
"compress/bzip2"
|
"compress/bzip2"
|
||||||
"compress/gzip"
|
"compress/gzip"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/mkrautz/goar"
|
|
||||||
"github.com/smira/aptly/utils"
|
|
||||||
"github.com/smira/go-xz"
|
|
||||||
"github.com/smira/lzma"
|
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/h2non/filetype/matchers"
|
||||||
|
"github.com/mkrautz/goar"
|
||||||
|
|
||||||
|
"github.com/smira/aptly/utils"
|
||||||
|
"github.com/smira/go-xz"
|
||||||
|
"github.com/smira/lzma"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetControlFileFromDeb reads control file from deb package
|
// GetControlFileFromDeb reads control file from deb package
|
||||||
@@ -119,29 +123,41 @@ func GetContentsFromDeb(packageFile string) ([]string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(header.Name, "data.tar") {
|
if strings.HasPrefix(header.Name, "data.tar") {
|
||||||
|
bufReader := bufio.NewReader(library)
|
||||||
|
signature, err := bufReader.Peek(270)
|
||||||
|
|
||||||
|
var isTar bool
|
||||||
|
if err == nil {
|
||||||
|
isTar = matchers.Tar(signature)
|
||||||
|
}
|
||||||
|
|
||||||
var tarInput io.Reader
|
var tarInput io.Reader
|
||||||
|
|
||||||
switch header.Name {
|
switch header.Name {
|
||||||
case "data.tar":
|
case "data.tar":
|
||||||
tarInput = library
|
tarInput = bufReader
|
||||||
case "data.tar.gz":
|
case "data.tar.gz":
|
||||||
ungzip, err := gzip.NewReader(library)
|
if isTar {
|
||||||
|
tarInput = bufReader
|
||||||
|
} else {
|
||||||
|
ungzip, err := gzip.NewReader(bufReader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to ungzip data.tar.gz from %s: %s", packageFile, err)
|
return nil, fmt.Errorf("unable to ungzip data.tar.gz from %s: %s", packageFile, err)
|
||||||
}
|
}
|
||||||
defer ungzip.Close()
|
defer ungzip.Close()
|
||||||
tarInput = ungzip
|
tarInput = ungzip
|
||||||
|
}
|
||||||
case "data.tar.bz2":
|
case "data.tar.bz2":
|
||||||
tarInput = bzip2.NewReader(library)
|
tarInput = bzip2.NewReader(bufReader)
|
||||||
case "data.tar.xz":
|
case "data.tar.xz":
|
||||||
unxz, err := xz.NewReader(library)
|
unxz, err := xz.NewReader(bufReader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to unxz data.tar.xz from %s: %s", packageFile, err)
|
return nil, fmt.Errorf("unable to unxz data.tar.xz from %s: %s", packageFile, err)
|
||||||
}
|
}
|
||||||
defer unxz.Close()
|
defer unxz.Close()
|
||||||
tarInput = unxz
|
tarInput = unxz
|
||||||
case "data.tar.lzma":
|
case "data.tar.lzma":
|
||||||
unlzma := lzma.NewReader(library)
|
unlzma := lzma.NewReader(bufReader)
|
||||||
defer unlzma.Close()
|
defer unlzma.Close()
|
||||||
tarInput = unlzma
|
tarInput = unlzma
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user