| ... | @@ -116,20 +116,19 @@ const Context = struct { | ... | @@ -116,20 +116,19 @@ const Context = struct { |
| 116 | }; | 116 | }; |
| 117 | | 117 | |
| 118 | fn serveRequest(request: *std.http.Server.Request, context: *Context) !void { | 118 | fn serveRequest(request: *std.http.Server.Request, context: *Context) !void { |
| 119 | if (std.mem.eql(u8, request.head.target, "/") or | 119 | const target = std.mem.trimRight(u8, request.head.target, "/"); |
| 120 | std.mem.eql(u8, request.head.target, "/debug/")) | 120 | if (target.len == 0 or std.mem.eql(u8, target, "/debug")) { |
| 121 | { | | |
| 122 | try serveDocsFile(request, context, "docs/index.html", "text/html"); | 121 | try serveDocsFile(request, context, "docs/index.html", "text/html"); |
| 123 | } else if (std.mem.eql(u8, request.head.target, "/main.js") or | 122 | } else if (std.mem.eql(u8, target, "/main.js") or |
| 124 | std.mem.eql(u8, request.head.target, "/debug/main.js")) | 123 | std.mem.eql(u8, target, "/debug/main.js")) |
| 125 | { | 124 | { |
| 126 | try serveDocsFile(request, context, "docs/main.js", "application/javascript"); | 125 | try serveDocsFile(request, context, "docs/main.js", "application/javascript"); |
| 127 | } else if (std.mem.eql(u8, request.head.target, "/main.wasm")) { | 126 | } else if (std.mem.eql(u8, target, "/main.wasm")) { |
| 128 | try serveWasm(request, context, .ReleaseFast); | 127 | try serveWasm(request, context, .ReleaseFast); |
| 129 | } else if (std.mem.eql(u8, request.head.target, "/debug/main.wasm")) { | 128 | } else if (std.mem.eql(u8, target, "/debug/main.wasm")) { |
| 130 | try serveWasm(request, context, .Debug); | 129 | try serveWasm(request, context, .Debug); |
| 131 | } else if (std.mem.eql(u8, request.head.target, "/sources.tar") or | 130 | } else if (std.mem.eql(u8, target, "/sources.tar") or |
| 132 | std.mem.eql(u8, request.head.target, "/debug/sources.tar")) | 131 | std.mem.eql(u8, target, "/debug/sources.tar")) |
| 133 | { | 132 | { |
| 134 | try serveSourcesTar(request, context); | 133 | try serveSourcesTar(request, context); |
| 135 | } else { | 134 | } else { |
| ... | @@ -433,6 +432,7 @@ fn openBrowserTab(gpa: Allocator, url: []const u8) !void { | ... | @@ -433,6 +432,7 @@ fn openBrowserTab(gpa: Allocator, url: []const u8) !void { |
| 433 | fn openBrowserTabThread(gpa: Allocator, url: []const u8) !void { | 432 | fn openBrowserTabThread(gpa: Allocator, url: []const u8) !void { |
| 434 | const main_exe = switch (builtin.os.tag) { | 433 | const main_exe = switch (builtin.os.tag) { |
| 435 | .windows => "explorer", | 434 | .windows => "explorer", |
| | 435 | .macos => "open", |
| 436 | else => "xdg-open", | 436 | else => "xdg-open", |
| 437 | }; | 437 | }; |
| 438 | var child = std.ChildProcess.init(&.{ main_exe, url }, gpa); | 438 | var child = std.ChildProcess.init(&.{ main_exe, url }, gpa); |