0
1
Fork 0

支持通过空格拆分多文件(shell数组)

支持files参数的值为在shell中得到的多文件列表(空格拼接)
This commit is contained in:
kerwin612 2023-07-12 01:07:24 +00:00
parent 23a38ad334
commit f687e7dda9
1 changed files with 23 additions and 15 deletions

38
main.go
View File

@ -8,6 +8,7 @@ import (
"path/filepath"
"strconv"
"strings"
"regexp"
"code.gitea.io/sdk/gitea"
gha "github.com/sethvargo/go-githubactions"
@ -107,24 +108,31 @@ func getDirFiles(dir string) ([]string, error) {
func getFiles(parentDir, files string) ([]string, error) {
var fileList []string
lines := strings.Split(files, "\n")
for _, line := range lines {
line = strings.Trim(line, "'")
line = strings.Trim(line, `"`)
if filepath.IsAbs(line) {
return nil, fmt.Errorf("file path %s is absolute", line)
}
line = filepath.Join(parentDir, line)
matches, err := filepath.Glob(line)
if err != nil {
return nil, err
}
for _, match := range matches {
files, err := getDirFiles(match)
fmt.Printf("the value of the files is: %s\n", files)
reg := regexp.MustCompile(`[^\s"']+|"([^"]*)"|'([^']*)'`)
arr := reg.FindAllString(files, -1)
fmt.Printf("the value after splitting by spaces is: %s\n", strings.Join(arr, ", "))
for _, str := range arr {
lines := strings.Split(str, "\n")
fmt.Printf("the value after splitting %s by \\n is: %s\n", str, strings.Join(lines, ", "))
for _, line := range lines {
line = strings.Trim(line, "'")
line = strings.Trim(line, `"`)
if filepath.IsAbs(line) {
return nil, fmt.Errorf("file path %s is absolute", line)
}
line = filepath.Join(parentDir, line)
matches, err := filepath.Glob(line)
if err != nil {
return nil, err
}
fileList = append(fileList, files...)
for _, match := range matches {
files, err := getDirFiles(match)
if err != nil {
return nil, err
}
fileList = append(fileList, files...)
}
}
}
return fileList, nil