package config import ( "fmt" "runtime" "strings" "github.com/billziss-gh/golib/shlex" ) func SanitizeCommand(cmdStr string) ([]string, error) { var cleanedLines []string for _, line := range strings.Split(cmdStr, "\n") { trimmed := strings.TrimSpace(line) // Skip comment lines if strings.HasPrefix(trimmed, "#") { continue } // Handle trailing backslashes by replacing with space if strings.HasSuffix(trimmed, "\\") { cleanedLines = append(cleanedLines, strings.TrimSuffix(trimmed, "\\")+" ") } else { cleanedLines = append(cleanedLines, line) } } // put it back together cmdStr = strings.Join(cleanedLines, "\n") // Split the command into arguments var args []string if runtime.GOOS == "windows" { args = shlex.Windows.Split(cmdStr) } else { args = shlex.Posix.Split(cmdStr) } // Ensure the command is not empty if len(args) == 0 { return nil, fmt.Errorf("empty command") } return args, nil } func StripComments(cmdStr string) string { var cleanedLines []string for _, line := range strings.Split(cmdStr, "\n") { trimmed := strings.TrimSpace(line) // Skip comment lines if strings.HasPrefix(trimmed, "#") { continue } cleanedLines = append(cleanedLines, line) } return strings.Join(cleanedLines, "\n") }