mirror of
https://github.com/containers/podman.git
synced 2025-12-01 18:49:18 +08:00
Based on our discussion gofumpt won the vote so use that one via golangci-lint. https://github.com/containers/podman/discussions/27291 Signed-off-by: Paul Holzinger <pholzing@redhat.com>
37 lines
994 B
Go
37 lines
994 B
Go
package specgenutilexternal
|
|
|
|
import (
|
|
"encoding/csv"
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
// FindMountType parses the input and extracts the type of the mount type and
|
|
// the remaining non-type tokens.
|
|
func FindMountType(input string) (mountType string, tokens []string, err error) {
|
|
// Split by comma, iterate over the slice and look for
|
|
// "type=$mountType". Everything else is appended to tokens.
|
|
found := false
|
|
csvReader := csv.NewReader(strings.NewReader(input))
|
|
records, err := csvReader.ReadAll()
|
|
if err != nil {
|
|
return "", nil, err
|
|
}
|
|
if len(records) != 1 {
|
|
return "", nil, errors.New("incorrect mount format: should be --mount type=<bind|glob|tmpfs|volume>,[src=<host-dir|volume-name>,]target=<ctr-dir>[,options]")
|
|
}
|
|
for _, s := range records[0] {
|
|
kv := strings.Split(s, "=")
|
|
if found || (len(kv) != 2 || kv[0] != "type") {
|
|
tokens = append(tokens, s)
|
|
continue
|
|
}
|
|
mountType = kv[1]
|
|
found = true
|
|
}
|
|
if !found {
|
|
mountType = "volume"
|
|
}
|
|
return mountType, tokens, err
|
|
}
|