aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-04-27 13:00:18 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-04-27 13:00:18 -0700
commit435a6e9b187168d869024d1002951e4bfa76333a (patch)
tree97d961ce2f3f5226a6b0b6c75034100588b4b146
parent55674a6add799cedae52822b821cbcf8e38e5973 (diff)
downloadbun-435a6e9b187168d869024d1002951e4bfa76333a.tar.gz
bun-435a6e9b187168d869024d1002951e4bfa76333a.tar.zst
bun-435a6e9b187168d869024d1002951e4bfa76333a.zip
alrighty
-rw-r--r--src/main_wasm.zig64
1 files changed, 50 insertions, 14 deletions
diff --git a/src/main_wasm.zig b/src/main_wasm.zig
index b954b3df8..55f3c5732 100644
--- a/src/main_wasm.zig
+++ b/src/main_wasm.zig
@@ -4,33 +4,69 @@ const logger = @import("logger.zig");
const alloc = @import("alloc.zig");
const options = @import("options.zig");
const js_parser = @import("js_parser.zig");
+const json_parser = @import("json_parser.zig");
const js_printer = @import("js_printer.zig");
const js_ast = @import("js_ast.zig");
+const linker = @import("linker.zig");
+const fs = @import("fs.zig");
+usingnamespace @import("ast/base.zig");
pub fn main() anyerror!void {
try alloc.setup(std.heap.page_allocator);
- // const args = try std.process.argsAlloc(alloc.dynamic);
- // // const stdout = std.io.getStdOut();
- // // const stderr = std.io.getStdErr();
+ const args = try std.process.argsAlloc(alloc.dynamic);
+ const stdout = std.io.getStdOut();
+ const stderr = std.io.getStdErr();
- // // if (args.len < 1) {
- // // const len = stderr.write("Pass a file");
- // // return;
- // // }
+ if (args.len < 1) {
+ const len = stderr.write("Pass a file");
+ return;
+ }
- // // alloc
+ const absolutePath = args[args.len - 2];
+ const pathname = fs.PathName.init(absolutePath);
+ const entryPointName = try alloc.dynamic.alloc(u8, pathname.base.len + pathname.ext.len);
+ std.mem.copy(u8, entryPointName, pathname.base);
+ std.mem.copy(u8, entryPointName[pathname.base.len..entryPointName.len], pathname.ext);
- const entryPointName = "/var/foo/index.js";
- const code = "for (let i = 0; i < 100; i++) { console.log('hi') aposkdpoaskdpokasdpokasdpokasdpokasdpoaksdpoaksdpoaskdpoaksdpoaksdpoaskdpoaskdpoasdk; ";
+ const code = try std.io.getStdIn().readToEndAlloc(alloc.dynamic, 99999999);
const opts = try options.TransformOptions.initUncached(alloc.dynamic, entryPointName, code);
var log = logger.Log.init(alloc.dynamic);
var source = logger.Source.initFile(opts.entry_point, alloc.dynamic);
+ var ast: js_ast.Ast = undefined;
- var parser = try js_parser.Parser.init(opts, &log, &source, alloc.dynamic);
- var res = try parser.parse();
+ switch (opts.loader) {
+ .json => {
+ var expr = try json_parser.ParseJSON(&source, &log, alloc.dynamic);
+ var stmt = js_ast.Stmt.alloc(alloc.dynamic, js_ast.S.ExportDefault{
+ .value = js_ast.StmtOrExpr{ .expr = expr },
+ .default_name = js_ast.LocRef{ .loc = logger.Loc{}, .ref = Ref{} },
+ }, logger.Loc{ .start = 0 });
+ var part = js_ast.Part{
+ .stmts = &([_]js_ast.Stmt{stmt}),
+ };
- const printed = try js_printer.printAst(alloc.dynamic, res.ast, js_ast.Symbol.Map{}, false, js_printer.Options{ .to_module_ref = js_ast.Ref{ .inner_index = 0 } });
+ ast = js_ast.Ast.initTest(&([_]js_ast.Part{part}));
+ },
+ .jsx, .tsx, .ts, .js => {
+ var parser = try js_parser.Parser.init(opts, &log, &source, alloc.dynamic);
+ var res = try parser.parse();
+ ast = res.ast;
+ },
+ else => {
+ std.debug.panic("Unsupported loader: {s}", .{opts.loader});
+ },
+ }
- std.debug.print("{s}\n{s}", .{ res, printed });
+ var _linker = linker.Linker{};
+ const printed = try js_printer.printAst(
+ alloc.dynamic,
+ ast,
+ js_ast.Symbol.Map{},
+ false,
+ js_printer.Options{ .to_module_ref = js_ast.Ref{ .inner_index = 0 } },
+ &_linker,
+ );
+
+ _ = try stdout.write(printed.js);
}