better errors

Former-commit-id: a16d16ac2d649b3678d3baaa7a4641c7a56f5d6d
This commit is contained in:
Jarred Sumner
2021-08-26 22:40:22 -07:00
parent 92229ac0f6
commit ec334111c9
3 changed files with 56 additions and 6 deletions

View File

@@ -46,7 +46,18 @@ pub const Cli = struct {
var panicker = MainPanicHandler.init(log);
MainPanicHandler.Singleton = &panicker;
try Command.start(allocator, log);
Command.start(allocator, log) catch |err| {
switch (err) {
error.MissingEntryPoint => {
Output.prettyErrorln("<r><red>MissingEntryPoint<r> what do you want to bundle?\n\n<d>Example:\n\n<r> <b><cyan>bun bun --use next<r>\n\n <b><cyan>bun bun ./src/index.ts ./src/file2.ts<r>\n", .{});
Output.flush();
std.os.exit(1);
},
else => {
return err;
},
}
};
}
};

View File

@@ -272,7 +272,11 @@ pub const RequestContext = struct {
200...299 => "YAY",
304 => "NOT MODIFIED",
300...303, 305...399 => "REDIRECT",
400...499 => "bad request :'(",
404 => "Not Found!",
403 => "Not Allowed!",
401 => "Login",
402 => "Pay Me",
400, 405...499 => "bad request :(",
500...599 => "ERR",
else => @compileError("Invalid code passed to printStatusLine"),
};

View File

@@ -412,15 +412,38 @@ pub fn NewResolver(cache_files: bool) type {
var prefixed_package_buf: [512]u8 = undefined;
// Prevent the extra lookup if the package is already prefixed, i.e. avoid "bun-framework-next-bun-framework-next"
if (strings.startsWith(package, bunFrameworkPackagePrefix) or package.len + bunFrameworkPackagePrefix.len >= prefixed_package_buf.len) {
return try r._resolveFramework(package, pair, preference, load_defines);
return r._resolveFramework(package, pair, preference, load_defines) catch |err| {
switch (err) {
error.ModuleNotFound => {
Output.prettyErrorln("<r><red>ResolveError<r> can't find framework: <b>\"{s}\"<r>.\n\nMaybe it's not installed? Try running this:\n\n <b>npm install -D {s}<r>\n <b>bun bun --use {s}<r>", .{ package, package, package });
Output.flush();
std.os.exit(1);
},
else => {
return err;
},
}
};
}
prefixed_package_buf[0..bunFrameworkPackagePrefix.len].* = bunFrameworkPackagePrefix.*;
std.mem.copy(u8, prefixed_package_buf[bunFrameworkPackagePrefix.len..], package);
return r._resolveFramework(prefixed_package_buf[0 .. bunFrameworkPackagePrefix.len + package.len], pair, preference, load_defines) catch |err| {
const prefixed_name = prefixed_package_buf[0 .. bunFrameworkPackagePrefix.len + package.len];
return r._resolveFramework(prefixed_name, pair, preference, load_defines) catch |err| {
switch (err) {
error.ModuleNotFound => {
return try r._resolveFramework(package, pair, preference, load_defines);
return r._resolveFramework(package, pair, preference, load_defines) catch |err2| {
switch (err2) {
error.ModuleNotFound => {
Output.prettyErrorln("<r><red>ResolveError<r> can't find framework: <b>\"{s}\"<r>.\n\nMaybe it's not installed? Try running this:\n\n <b>npm install -D {s}\n <b>bun bun --use {s}<r>", .{ package, prefixed_name, package });
Output.flush();
std.os.exit(1);
},
else => {
return err;
},
}
};
},
else => {
return err;
@@ -429,7 +452,19 @@ pub fn NewResolver(cache_files: bool) type {
};
}
return try r._resolveFramework(package, pair, preference, load_defines);
return r._resolveFramework(package, pair, preference, load_defines) catch |err| {
switch (err) {
error.ModuleNotFound => {
Output.prettyError("<r><red>ResolveError<r> can't find local framework: <b>\"{s}\"<r>.", .{package});
Output.flush();
std.os.exit(1);
},
else => {
return err;
},
}
};
}
fn _resolveFramework(