mirror of
https://github.com/oven-sh/bun
synced 2026-02-11 03:18:53 +00:00
Threader
Former-commit-id: a13dd6402f54527e87e9afdbbf48e5ff1501c8f9
This commit is contained in:
@@ -166,7 +166,7 @@ pub const Cli = struct {
|
||||
|
||||
var diag = clap.Diagnostic{};
|
||||
|
||||
var args = clap.parse(clap.Help, ¶ms, .{ .diagnostic = &diag }) catch |err| {
|
||||
var args = clap.parse(clap.Help, ¶ms, .{ .diagnostic = &diag, .allocator = allocator }) catch |err| {
|
||||
// Report useful error and exit
|
||||
diag.report(stderr.writer(), err) catch {};
|
||||
return err;
|
||||
@@ -365,6 +365,35 @@ pub const Cli = struct {
|
||||
pub const src = "var headers = new Headers(); headers.set(\"hey\", \"hi\"); console.log(headers.get(\"hey\")); \"HELLO\";";
|
||||
};
|
||||
|
||||
pub fn Threader(comptime Stdout: type, comptime Stderr: type) type {
|
||||
return struct {
|
||||
allocator: *std.mem.Allocator,
|
||||
stdout: Stdout,
|
||||
stderr: Stderr,
|
||||
args: Api.TransformOptions,
|
||||
pub fn spawn(this: @This()) !void {
|
||||
try alloc.setup(std.heap.c_allocator);
|
||||
var stdout = std.io.getStdOut();
|
||||
// var stdout = std.io.bufferedWriter(stdout_file.writer());
|
||||
var stderr = std.io.getStdErr();
|
||||
// var stderr = std.io.bufferedWriter(stderr_file.writer());
|
||||
var output_source = Output.Source.init(stdout, stderr);
|
||||
// defer stdout.flush() catch {};
|
||||
// defer stderr.flush() catch {};
|
||||
Output.Source.set(&output_source);
|
||||
Output.enable_ansi_colors = stderr.isTty();
|
||||
|
||||
var log = logger.Log.init(this.allocator);
|
||||
|
||||
var vm = try VirtualMachine.init(this.allocator, this.args, null, &log);
|
||||
var promise = try vm.loadEntryPoint(vm.bundler.options.entry_points[0]);
|
||||
if (promise.status(vm.global.vm()) == js.JSPromise.Status.Rejected) {
|
||||
vm.defaultErrorHandler(promise.result(vm.global.vm()));
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
pub fn start(allocator: *std.mem.Allocator, stdout: anytype, stderr: anytype) anyerror!void {
|
||||
const start_time = std.time.nanoTimestamp();
|
||||
var log = logger.Log.init(allocator);
|
||||
@@ -377,17 +406,16 @@ pub const Cli = struct {
|
||||
|
||||
// var results = try bundler.Bundler.bundle(allocator, &log, args);
|
||||
// var file = results.output_files[0];
|
||||
var vm = try VirtualMachine.init(allocator, args, null, &log);
|
||||
|
||||
// var resolved_entry_point = try vm.bundler.resolver.resolve(
|
||||
// vm.bundler.fs.top_level_dir,
|
||||
// vm.bundler.normalizeEntryPointPath(vm.bundler.options.entry_points[0]),
|
||||
// .entry_point,
|
||||
// );
|
||||
|
||||
var promise = try vm.loadEntryPoint(vm.bundler.options.entry_points[0]);
|
||||
if (promise.status(vm.global.vm()) == js.JSPromise.Status.Rejected) {
|
||||
vm.defaultRejectionHandler(promise.result(vm.global.vm()));
|
||||
}
|
||||
const Threadable = Threader(@TypeOf(stdout), @TypeOf(stderr));
|
||||
const runner = Threadable{ .allocator = allocator, .stdout = stdout, .stderr = stderr, .args = args };
|
||||
var thread = try std.Thread.spawn(.{}, Threadable.spawn, .{runner});
|
||||
thread.join();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user