Compare commits

...

2 Commits

Author SHA1 Message Date
Lykin 2388f309d8 fix: parse cmd error with single quotes 2024-09-02 18:50:51 +08:00
Lykin a9c7cb1cd2 chore: trim svg icon 2024-08-31 23:54:18 +08:00
3 changed files with 23 additions and 38 deletions

View File

@ -135,29 +135,38 @@ func SplitCmd(cmd string) []string {
var result []string var result []string
var curStr strings.Builder var curStr strings.Builder
var preChar int32 var preChar int32
inQuotes := false var quotesChar int32
for _, char := range []rune(cmd) { cmdRune := []rune(cmd)
if char == '"' && preChar != '\\' { for _, char := range cmdRune {
inQuotes = !inQuotes if (char == '"' || char == '\'') && preChar != '\\' && (quotesChar == 0 || quotesChar == char) {
} else if char == ' ' && !inQuotes { if quotesChar != 0 {
if curStr.Len() > 0 { quotesChar = 0
if part, e := strconv.Unquote(`"` + curStr.String() + `"`); e == nil { } else {
result = append(result, part) quotesChar = char
}
curStr.Reset()
} }
} else if char == ' ' && quotesChar == 0 {
result = append(result, curStr.String())
curStr.Reset()
} else { } else {
curStr.WriteRune(char) curStr.WriteRune(char)
} }
preChar = char preChar = char
} }
result = append(result, curStr.String())
if curStr.Len() > 0 { result = sliceutil.FilterMap(result, func(i int) (string, bool) {
if part, e := strconv.Unquote(`"` + curStr.String() + `"`); e == nil { var part = strings.TrimSpace(result[i])
result = append(result, part) if len(part) <= 0 {
return "", false
} }
} if strings.Contains(part, "\\") {
if unquotePart, e := strconv.Unquote(`"` + part + `"`); e == nil {
return unquotePart, true
}
}
return part, true
})
return result return result
} }

View File

@ -39,18 +39,6 @@ const props = defineProps({
stroke="currentColor" stroke="currentColor"
stroke-linejoin="round" /> stroke-linejoin="round" />
<path :stroke-width="props.strokeWidth" d="M43 22H5" stroke="currentColor" stroke-linejoin="round" /> <path :stroke-width="props.strokeWidth" d="M43 22H5" stroke="currentColor" stroke-linejoin="round" />
<path
:stroke-width="props.strokeWidth"
d="M5 16V28"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round" />
<path
:stroke-width="props.strokeWidth"
d="M43 16V28"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round" />
</svg> </svg>
</template> </template>

View File

@ -37,18 +37,6 @@ const props = defineProps({
d="M26 38H38" d="M26 38H38"
stroke-linecap="round" stroke-linecap="round"
stroke-linejoin="round" /> stroke-linejoin="round" />
<path
:stroke-width="props.strokeWidth"
d="M44 37V27"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round" />
<path
:stroke-width="props.strokeWidth"
d="M4 37V27"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round" />
</svg> </svg>
</template> </template>