Merge pull request #34 from Froxcey/main

Improve Cli etc...
This commit is contained in:
bobf 2024-03-25 18:19:49 +00:00 committed by GitHub
commit a0e5a43da7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 26 additions and 22 deletions

View File

@ -51,7 +51,7 @@ pub fn main() !void {
run(allocator, options, writer) catch |err| { run(allocator, options, writer) catch |err| {
switch (err) { switch (err) {
error.JetzigCommandError => std.os.exit(1), error.JetzigCommandError => std.process.exit(1),
else => return err, else => return err,
} }
}; };

View File

@ -62,7 +62,7 @@ pub fn run(
var install_argv = std.ArrayList([]const u8).init(allocator); var install_argv = std.ArrayList([]const u8).init(allocator);
defer install_argv.deinit(); defer install_argv.deinit();
try install_argv.appendSlice(&[_][]const u8{ "zig", "build" }); try install_argv.appendSlice(&[_][]const u8{ "zig", "build", "--color", "on" });
switch (builtin.os.tag) { switch (builtin.os.tag) {
.windows => try tar_argv.appendSlice(&[_][]const u8{ .windows => try tar_argv.appendSlice(&[_][]const u8{
@ -134,6 +134,6 @@ pub fn run(
} else { } else {
std.debug.print("Unable to locate compiled executable. Exiting.", .{}); std.debug.print("Unable to locate compiled executable. Exiting.", .{});
util.printFailure(); util.printFailure();
std.os.exit(1); std.process.exit(1);
} }
} }

View File

@ -63,16 +63,20 @@ pub fn run(
); );
while (true) { while (true) {
try util.runCommand( util.runCommand(
allocator, allocator,
realpath, realpath,
&[_][]const u8{ "zig", "build", "-Djetzig_runner=true", "install" }, &[_][]const u8{ "zig", "build", "-Djetzig_runner=true", "install", "--color", "on" },
); ) catch {
std.debug.print("Build failed, waiting for file change...\n", .{});
try awaitFileChange(allocator, cwd, &mtime);
continue;
};
const exe_path = try util.locateExecutable(allocator, cwd, .{}); const exe_path = try util.locateExecutable(allocator, cwd, .{});
if (exe_path == null) { if (exe_path == null) {
std.debug.print("Unable to locate compiled executable. Exiting.\n", .{}); std.debug.print("Unable to locate compiled executable. Exiting.\n", .{});
std.os.exit(1); std.process.exit(1);
} }
const argv = &[_][]const u8{exe_path.?}; const argv = &[_][]const u8{exe_path.?};
@ -94,26 +98,26 @@ pub fn run(
if (!options.reload) { if (!options.reload) {
const term = try process.wait(); const term = try process.wait();
std.os.exit(term.Exited); std.process.exit(term.Exited);
} }
while (true) { // HACK: This currenly doesn't restart the server when it exits, maybe that
if (process.term) |_| { // could be implemented in the future.
_ = try process.wait();
std.debug.print("Server exited, restarting...\n", .{});
}
std.time.sleep(watch_changes_pause_duration); awaitFileChange(allocator, cwd, mtime);
const new_mtime = try totalMtime(allocator, cwd, "src");
if (new_mtime > mtime) {
std.debug.print("Changes detected, restarting server...\n", .{}); std.debug.print("Changes detected, restarting server...\n", .{});
_ = try process.kill(); _ = try process.kill();
mtime = new_mtime;
break;
} }
} }
fn awaitFileChange(allocator: std.mem.Allocator, cwd: std.fs.Dir, mtime: *i128) !void {
while (true) {
std.time.sleep(watch_changes_pause_duration);
const new_mtime = try totalMtime(allocator, cwd, "src");
if (new_mtime > mtime.*) {
mtime.* = new_mtime;
return;
}
} }
} }