-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfiletype.go
More file actions
66 lines (60 loc) · 1.35 KB
/
filetype.go
File metadata and controls
66 lines (60 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package gnsys
import (
"strings"
)
type FileType int
const (
UnknownFT FileType = iota
ZipFT // .zip
GzFT // .gz
TarFT // .tar
TarGzFT // .tar.gz
TarXzFt // .tar.xz
TarBzFT // .tar.bz2
Bz2FT // .bz2
XzFT // .xz
SqlFT // .sql
SqliteFT // .sqlite
)
var ftMap = map[FileType]string{
UnknownFT: "unknown",
ZipFT: "zip",
GzFT: "gz",
TarFT: "tar",
TarGzFT: "tar-gzip",
TarXzFt: "tar-xz",
TarBzFT: "tar-bz2",
Bz2FT: "bz2",
XzFT: "xz",
SqlFT: "sql",
SqliteFT: "sqlite",
}
func (ft FileType) String() string {
return ftMap[ft]
}
func GetFileType(file string) FileType {
switch {
case strings.HasSuffix(file, ".zip"):
return ZipFT
case strings.HasSuffix(file, ".tar"):
return TarFT
case strings.HasSuffix(file, ".tar.gz"), strings.HasSuffix(file, ".tgz"):
return TarGzFT
case strings.HasSuffix(file, ".gz"):
return GzFT
case strings.HasSuffix(file, ".tar.xz"):
return TarXzFt
case strings.HasSuffix(file, ".xz"):
return XzFT
case strings.HasSuffix(file, ".tar.bz2"):
return TarBzFT
case strings.HasSuffix(file, ".bz2"):
return Bz2FT
case strings.HasSuffix(file, ".sql"):
return SqlFT
case strings.HasSuffix(file, ".sqlite"):
return SqliteFT
default:
return UnknownFT
}
}