chore(windows): show warning on windows for now

Andrey Nering created

Change summary

main.go | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Detailed changes

main.go 🔗

@@ -5,6 +5,7 @@ import (
 	"log/slog"
 	"net/http"
 	"os"
+	"runtime"
 
 	_ "net/http/pprof" // profiling
 
@@ -12,9 +13,14 @@ import (
 
 	"github.com/charmbracelet/crush/internal/cmd"
 	"github.com/charmbracelet/crush/internal/log"
+	"github.com/charmbracelet/lipgloss/v2"
 )
 
 func main() {
+	if runtime.GOOS == "windows" {
+		showWindowsWarning()
+	}
+
 	defer log.RecoverPanic("main", func() {
 		slog.Error("Application terminated due to unhandled panic")
 	})
@@ -30,3 +36,23 @@ func main() {
 
 	cmd.Execute()
 }
+
+func showWindowsWarning() {
+	content := lipgloss.JoinVertical(lipgloss.Left,
+		lipgloss.NewStyle().Bold(true).Render("WARNING:")+" Crush is experimental on Windows!",
+		"",
+		"While we work on it, we recommend WSL2 for a better experience.",
+		"",
+		lipgloss.NewStyle().Italic(true).Render("Press Enter to continue..."),
+	)
+	content = lipgloss.NewStyle().
+		Border(lipgloss.RoundedBorder()).
+		Padding(1).
+		Render(content)
+	content += "\n"
+
+	fmt.Print(content)
+
+	var input string
+	fmt.Scanln(&input)
+}