mirror of
https://github.com/sst/opencode.git
synced 2025-07-23 07:45:00 +00:00
47 lines
925 B
Go
47 lines
925 B
Go
package util
|
|
|
|
import (
|
|
"log/slog"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
|
|
tea "github.com/charmbracelet/bubbletea/v2"
|
|
)
|
|
|
|
func CmdHandler(msg tea.Msg) tea.Cmd {
|
|
return func() tea.Msg {
|
|
return msg
|
|
}
|
|
}
|
|
|
|
func Clamp(v, low, high int) int {
|
|
// Swap if needed to ensure low <= high
|
|
if high < low {
|
|
low, high = high, low
|
|
}
|
|
return min(high, max(low, v))
|
|
}
|
|
|
|
func IsWsl() bool {
|
|
// Check for WSL environment variables
|
|
if os.Getenv("WSL_DISTRO_NAME") != "" {
|
|
return true
|
|
}
|
|
|
|
// Check /proc/version for WSL signature
|
|
if data, err := os.ReadFile("/proc/version"); err == nil {
|
|
version := strings.ToLower(string(data))
|
|
return strings.Contains(version, "microsoft") || strings.Contains(version, "wsl")
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func Measure(tag string) func(...any) {
|
|
startTime := time.Now()
|
|
return func(args ...any) {
|
|
args = append(args, []any{"timeTakenMs", time.Since(startTime).Milliseconds()}...)
|
|
slog.Debug(tag, args...)
|
|
}
|
|
}
|