util.go 925 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package util
  2. import (
  3. "log/slog"
  4. "os"
  5. "strings"
  6. "time"
  7. tea "github.com/charmbracelet/bubbletea/v2"
  8. )
  9. func CmdHandler(msg tea.Msg) tea.Cmd {
  10. return func() tea.Msg {
  11. return msg
  12. }
  13. }
  14. func Clamp(v, low, high int) int {
  15. // Swap if needed to ensure low <= high
  16. if high < low {
  17. low, high = high, low
  18. }
  19. return min(high, max(low, v))
  20. }
  21. func IsWsl() bool {
  22. // Check for WSL environment variables
  23. if os.Getenv("WSL_DISTRO_NAME") != "" {
  24. return true
  25. }
  26. // Check /proc/version for WSL signature
  27. if data, err := os.ReadFile("/proc/version"); err == nil {
  28. version := strings.ToLower(string(data))
  29. return strings.Contains(version, "microsoft") || strings.Contains(version, "wsl")
  30. }
  31. return false
  32. }
  33. func Measure(tag string) func(...any) {
  34. startTime := time.Now()
  35. return func(args ...any) {
  36. args = append(args, []any{"timeTakenMs", time.Since(startTime).Milliseconds()}...)
  37. slog.Debug(tag, args...)
  38. }
  39. }