Merge pull request #131 from z1fire/wip

New custom print function to handle windows unicode
This commit is contained in:
Zackary Housend 2024-11-30 16:39:22 -05:00 committed by GitHub
commit 31f8a4a93c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 36 additions and 3 deletions

View File

@ -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/
\\

View File

@ -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);
}
};