Have more intelligence on splitting bind paths
This commit is contained in:
@@ -7,10 +7,10 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
"github.com/hpcng/warewulf/internal/pkg/container"
|
||||
"github.com/hpcng/warewulf/internal/pkg/util"
|
||||
"github.com/hpcng/warewulf/internal/pkg/wwlog"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
@@ -38,9 +38,11 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
var source string
|
||||
var dest string
|
||||
|
||||
bind := strings.Split(b, ":")
|
||||
bind := util.SplitPaths(b, ":")
|
||||
source = bind[0]
|
||||
|
||||
fmt.Println(bind)
|
||||
|
||||
if len(bind) == 1 {
|
||||
dest = source
|
||||
} else {
|
||||
|
||||
@@ -315,3 +315,43 @@ func CopyUIDGID(source string, dest string) error {
|
||||
err = os.Chown(dest, UID, GID)
|
||||
return err
|
||||
}
|
||||
|
||||
func SplitEscaped(input, delim, escape string) []string {
|
||||
var ret []string
|
||||
str := ""
|
||||
for i := 1; i < len(input); i++ {
|
||||
str += string(input[i-1])
|
||||
if string(input[i]) == delim && string(input[i-1]) != escape {
|
||||
i++
|
||||
ret = append(ret, str)
|
||||
str = ""
|
||||
}
|
||||
if string(input[i]) == escape {
|
||||
i++
|
||||
}
|
||||
|
||||
}
|
||||
str += string(input[len(input)-1])
|
||||
ret = append(ret, str)
|
||||
|
||||
return (ret)
|
||||
}
|
||||
|
||||
func SplitPaths(input, delim string) []string {
|
||||
var ret []string
|
||||
str := ""
|
||||
for i := 1; i < len(input); i++ {
|
||||
str += string(input[i-1])
|
||||
//if (string(input[i]) == delim && string(input[i-1]) != "/") && (IsDir(str) || IsFile(str)) {
|
||||
if string(input[i]) == delim && (IsDir(str) || IsFile(str)) {
|
||||
i++
|
||||
ret = append(ret, str)
|
||||
str = ""
|
||||
}
|
||||
|
||||
}
|
||||
str += string(input[len(input)-1])
|
||||
ret = append(ret, str)
|
||||
|
||||
return (ret)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user