diff options
author | 2021-04-27 13:00:18 -0700 | |
---|---|---|
committer | 2021-04-27 13:00:18 -0700 | |
commit | 435a6e9b187168d869024d1002951e4bfa76333a (patch) | |
tree | 97d961ce2f3f5226a6b0b6c75034100588b4b146 | |
parent | 55674a6add799cedae52822b821cbcf8e38e5973 (diff) | |
download | bun-435a6e9b187168d869024d1002951e4bfa76333a.tar.gz bun-435a6e9b187168d869024d1002951e4bfa76333a.tar.zst bun-435a6e9b187168d869024d1002951e4bfa76333a.zip |
alrighty
-rw-r--r-- | src/main_wasm.zig | 64 |
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); } |