diff options
Diffstat (limited to 'src/cli.zig')
-rw-r--r-- | src/cli.zig | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/src/cli.zig b/src/cli.zig index b7cbc97ba..f6b444087 100644 --- a/src/cli.zig +++ b/src/cli.zig @@ -41,12 +41,12 @@ pub const Cli = struct { pub fn startTransform(allocator: *std.mem.Allocator, args: Api.TransformOptions, log: *logger.Log) anyerror!void {} pub fn start(allocator: *std.mem.Allocator, stdout: anytype, stderr: anytype, comptime MainPanicHandler: type) anyerror!void { start_time = std.time.nanoTimestamp(); - var log = logger.Log.init(allocator); - var panicker = MainPanicHandler.init(&log); + var log = try allocator.create(logger.Log); + log.* = logger.Log.init(allocator); + var panicker = MainPanicHandler.init(log); MainPanicHandler.Singleton = &panicker; - try Command.start(allocator, &log); - std.mem.doNotOptimizeAway(&log); + try Command.start(allocator, log); } }; @@ -137,7 +137,7 @@ pub const Arguments = struct { } } - const ParamType = clap.Param(clap.Help); + pub const ParamType = clap.Param(clap.Help); const params: [25]ParamType = brk: { @setEvalBranchQuota(9999); @@ -448,6 +448,31 @@ const HelpCommand = struct { } }; +pub const PrintBundleCommand = struct { + pub fn exec(ctx: Command.Context) !void { + const entry_point = ctx.args.entry_points[0]; + var out_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined; + var stdout = std.io.getStdOut(); + + var input = try std.fs.openFileAbsolute(try std.os.realpath(ctx.args.entry_points[0], &out_buffer), .{ .read = true }); + const params = comptime [_]Arguments.ParamType{ + clap.parseParam("--summary Peek inside the .bun") catch unreachable, + }; + + var jsBundleArgs = clap.parse(clap.Help, ¶ms, .{ .allocator = ctx.allocator }) catch |err| { + try NodeModuleBundle.printBundle(std.fs.File, input, @TypeOf(stdout), stdout); + return; + }; + + if (jsBundleArgs.flag("--summary")) { + NodeModuleBundle.printSummaryFromDisk(std.fs.File, input, @TypeOf(stdout), stdout, ctx.allocator) catch {}; + return; + } + + try NodeModuleBundle.printBundle(std.fs.File, input, @TypeOf(stdout), stdout); + } +}; + pub const Command = struct { pub const Context = struct { start_time: i128, @@ -536,6 +561,13 @@ pub const Command = struct { } }; + if (ctx.args.entry_points.len == 1 and + std.mem.endsWith(u8, ctx.args.entry_points[0], ".bun")) + { + try PrintBundleCommand.exec(ctx); + return; + } + try BuildCommand.exec(ctx); }, else => unreachable, |