package infra import ( "context" "fmt" "os/exec" "strings" ) // WailsBuildConfig configura la compilación de un proyecto Wails. type WailsBuildConfig struct { Dir string // Directorio del proyecto Wails Platform string // linux, windows, darwin (default: current) Output string // Nombre del binario de salida Debug bool // Build con debug info } // WailsBuild compila un proyecto Wails para la plataforma especificada. func WailsBuild(ctx context.Context, cfg WailsBuildConfig) error { if cfg.Dir == "" { return fmt.Errorf("dir is required") } args := []string{"build"} if cfg.Platform != "" { args = append(args, "-platform", cfg.Platform) } if cfg.Output != "" { args = append(args, "-o", cfg.Output) } if cfg.Debug { args = append(args, "-debug") } cmd := exec.CommandContext(ctx, "wails", args...) cmd.Dir = cfg.Dir output, err := cmd.CombinedOutput() if err != nil { return fmt.Errorf("wails build failed: %w\n%s", err, string(output)) } fmt.Printf("Built successfully: %s\n", strings.TrimSpace(string(output))) return nil } // WailsDev lanza un proyecto Wails en modo desarrollo con hot reload. func WailsDev(ctx context.Context, dir string, browser bool) error { if dir == "" { return fmt.Errorf("dir is required") } args := []string{"dev"} if browser { args = append(args, "-browser") } cmd := exec.CommandContext(ctx, "wails", args...) cmd.Dir = dir cmd.Stdout = nil // inherit cmd.Stderr = nil return cmd.Run() }