mirror of
https://github.com/jetzig-framework/jetzig.git
synced 2025-05-14 14:06:08 +00:00
Merge pull request #131 from z1fire/wip
New custom print function to handle windows unicode
This commit is contained in:
commit
31f8a4a93c
@ -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/
|
||||
\\
|
||||
|
34
cli/util.zig
34
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);
|
||||
}
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user