mirror of
https://github.com/1Panel-dev/KubePi.git
synced 2025-10-05 15:26:58 +08:00
64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
package podtool
|
|
|
|
import "strings"
|
|
|
|
func (p *PodTool) ListFiles(path string) ([]File, error) {
|
|
var files []File
|
|
commands := []string{"ls", "-l", "--full-time", path}
|
|
|
|
res, err := p.ExecCommand(commands)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := string(res)
|
|
array := strings.Split(result, "\n")
|
|
i := 0
|
|
if strings.Contains(array[0], "total") {
|
|
i = 1
|
|
}
|
|
for ; i < len(array); i++ {
|
|
line := array[i]
|
|
fArray := strings.Fields(line)
|
|
if len(fArray) >= 9 {
|
|
f := File{
|
|
Size: fArray[4],
|
|
Mode: fArray[0],
|
|
ModTime: fArray[5] + " " + fArray[6],
|
|
User: fArray[2],
|
|
UserGroup: fArray[3],
|
|
}
|
|
var name string
|
|
if strings.HasPrefix(f.Mode, "l") && len(fArray) > 10 {
|
|
f.Link = getLink(line)
|
|
name = getLinkName(fArray[8], line)
|
|
} else {
|
|
name = getName(fArray[8], line)
|
|
}
|
|
if strings.HasPrefix(f.Mode, "d") {
|
|
f.IsDir = true
|
|
}
|
|
|
|
f.Name = name
|
|
files = append(files, f)
|
|
}
|
|
}
|
|
return files, nil
|
|
}
|
|
|
|
func getName(sub string, line string) string {
|
|
return strings.TrimSpace(line[strings.LastIndex(line, sub):])
|
|
}
|
|
|
|
func getLink(line string) string {
|
|
const linkTag = "->"
|
|
in := strings.Index(line, linkTag)
|
|
return strings.TrimSpace(line[in+len(linkTag):])
|
|
}
|
|
|
|
func getLinkName(sub string, line string) string {
|
|
const linkTag = "->"
|
|
linkIn := strings.Index(line, linkTag)
|
|
nameIn := strings.Index(line, sub)
|
|
return strings.TrimSpace(line[nameIn:linkIn])
|
|
}
|