Initial DDC release
This commit is contained in:
commit
434f6441da
57 files changed
+4606
No files matched your search
Executable
+50
@@ -0,0 +1,50 @@
|
||||
package extract
|
||||
|
||||
import "strings"
|
||||
|
||||
type format int
|
||||
|
||||
const (
|
||||
formatNone format = iota
|
||||
formatZip
|
||||
formatTar
|
||||
formatTarGzip
|
||||
formatTarBzip2
|
||||
)
|
||||
|
||||
var knownSuffixes = []struct {
|
||||
suffix string
|
||||
format format
|
||||
}{
|
||||
{".tar.gz", formatTarGzip},
|
||||
{".tgz", formatTarGzip},
|
||||
{".tar.bz2", formatTarBzip2},
|
||||
{".tbz2", formatTarBzip2},
|
||||
{".tbz", formatTarBzip2},
|
||||
{".tar", formatTar},
|
||||
{".zip", formatZip},
|
||||
}
|
||||
|
||||
func detect(name string) (format, string) {
|
||||
lowerName := strings.ToLower(name)
|
||||
for _, known := range knownSuffixes {
|
||||
if strings.HasSuffix(lowerName, known.suffix) {
|
||||
return known.format, known.suffix
|
||||
}
|
||||
}
|
||||
return formatNone, ""
|
||||
}
|
||||
|
||||
func IsArchive(name string) bool {
|
||||
archiveFormat, _ := detect(name)
|
||||
return archiveFormat != formatNone
|
||||
}
|
||||
|
||||
func DirectoryName(archiveName string) string {
|
||||
_, suffix := detect(archiveName)
|
||||
base := strings.Trim(archiveName[:len(archiveName)-len(suffix)], ". ")
|
||||
if base == "" {
|
||||
return "extracted"
|
||||
}
|
||||
return base
|
||||
}
|
||||
Reference in new issue
Block a user