xtool/env: fix ExpandEnvToArgs check pkg-config

This commit is contained in:
visualfc
2024-12-02 22:15:21 +08:00
parent 7a5bd6ae6a
commit a1c1a4889b

18
xtool/env/env.go vendored
View File

@@ -32,14 +32,23 @@ var (
) )
func ExpandEnvToArgs(s string) []string { func ExpandEnvToArgs(s string) []string {
return safesplit.SplitPkgConfigFlags(expandEnvWithCmd(s)) r, config := expandEnvWithCmd(s)
if r == "" {
return nil
}
if config {
return safesplit.SplitPkgConfigFlags(r)
}
return []string{r}
} }
func ExpandEnv(s string) string { func ExpandEnv(s string) string {
return expandEnvWithCmd(s) r, _ := expandEnvWithCmd(s)
return r
} }
func expandEnvWithCmd(s string) string { func expandEnvWithCmd(s string) (string, bool) {
var config bool
expanded := reSubcmd.ReplaceAllStringFunc(s, func(m string) string { expanded := reSubcmd.ReplaceAllStringFunc(s, func(m string) string {
subcmd := strings.TrimSpace(m[2 : len(m)-1]) subcmd := strings.TrimSpace(m[2 : len(m)-1])
args := parseSubcmd(subcmd) args := parseSubcmd(subcmd)
@@ -48,6 +57,7 @@ func expandEnvWithCmd(s string) string {
fmt.Fprintf(os.Stderr, "expand cmd only support pkg-config and llvm-config: '%s'\n", subcmd) fmt.Fprintf(os.Stderr, "expand cmd only support pkg-config and llvm-config: '%s'\n", subcmd)
return "" return ""
} }
config = true
var out []byte var out []byte
var err error var err error
@@ -60,7 +70,7 @@ func expandEnvWithCmd(s string) string {
return strings.Replace(strings.TrimSpace(string(out)), "\n", " ", -1) return strings.Replace(strings.TrimSpace(string(out)), "\n", " ", -1)
}) })
return strings.TrimSpace(os.Expand(expanded, os.Getenv)) return strings.TrimSpace(os.Expand(expanded, os.Getenv)), config
} }
func parseSubcmd(s string) []string { func parseSubcmd(s string) []string {