diff --git a/cli/commands/init.zig b/cli/commands/init.zig index 054f313..9556661 100644 --- a/cli/commands/init.zig +++ b/cli/commands/init.zig @@ -3,7 +3,6 @@ const args = @import("args"); const util = @import("../util.zig"); const cli = @import("../cli.zig"); - const init_data = @import("init_data").init_data; /// Command line options for the `init` command. @@ -209,7 +208,7 @@ pub fn run( // const git_setup = false; // if (git_setup) try gitSetup(allocator, install_dir); - std.debug.print( + try util.unicodePrint( \\ \\Setup complete! ✈️ 🦎 \\ @@ -217,7 +216,7 @@ pub fn run( \\ \\ $ cd {s} \\ - \\ $ zig build run + \\ $ zig build run or jetzig server \\ \\And then browse to http://localhost:8080/ \\ diff --git a/cli/util.zig b/cli/util.zig index fb37f16..c4cb30f 100644 --- a/cli/util.zig +++ b/cli/util.zig @@ -289,3 +289,37 @@ pub fn environmentBuildOption(environment: cli.Environment) []const u8 { inline else => |tag| "-Denvironment=" ++ @tagName(tag), }; } + + + +pub fn unicodePrint(comptime fmt: []const u8, args: anytype) !void { + if (builtin.os.tag == .windows) { + // Windows-specific code + const cp_out = try UTF8ConsoleOutput.init(); + defer cp_out.deinit(); + + std.debug.print(comptime fmt, args); + } else { + // Non-Windows platforms just print normally + std.debug.print(fmt, args); + } +} +const UTF8ConsoleOutput = struct { + original: c_uint, + + fn init() !UTF8ConsoleOutput { + const original = std.os.windows.kernel32.GetConsoleOutputCP(); + if (original == 0) { + return error.FailedToGetConsoleOutputCP; + } + const result = std.os.windows.kernel32.SetConsoleOutputCP(65001); // UTF-8 code page + if (result == 0) { + return error.FailedToSetConsoleOutputCP; + } + return .{ .original = original }; + } + + fn deinit(self: UTF8ConsoleOutput) void { + _ = std.os.windows.kernel32.SetConsoleOutputCP(self.original); + } +}; \ No newline at end of file