diff options
author | 2021-05-30 18:26:18 -0700 | |
---|---|---|
committer | 2021-05-30 18:26:18 -0700 | |
commit | dd72bf5ab657af89d45ee629e8432d9b860a2351 (patch) | |
tree | 9646821a9dc179f2fea2361cbed534ac441c550a /src/cli.zig | |
parent | 741d35f0b3f50edd58592259890ca0ef71d2b8dd (diff) | |
download | bun-dd72bf5ab657af89d45ee629e8432d9b860a2351.tar.gz bun-dd72bf5ab657af89d45ee629e8432d9b860a2351.tar.zst bun-dd72bf5ab657af89d45ee629e8432d9b860a2351.zip |
cool
Former-commit-id: 7dc3ee4c893a476cee1e78c19f154f33a9d824a9
Diffstat (limited to 'src/cli.zig')
-rw-r--r-- | src/cli.zig | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/cli.zig b/src/cli.zig index de0be93e2..74ba7e252 100644 --- a/src/cli.zig +++ b/src/cli.zig @@ -329,7 +329,18 @@ pub const Cli = struct { } else |err| {} did_write = true; - var root_dir = try std.fs.openDirAbsolute(result.outbase, std.fs.Dir.OpenDirOptions{}); + var root_dir = std.fs.openDirAbsolute(result.outbase, std.fs.Dir.OpenDirOptions{}) catch brk: { + std.fs.makeDirAbsolute(result.outbase) catch |err| { + Output.printErrorln("error: Unable to mkdir \"{s}\": \"{s}\"", .{ result.outbase, @errorName(err) }); + std.os.exit(1); + }; + + var handle = std.fs.openDirAbsolute(result.outbase, std.fs.Dir.OpenDirOptions{}) catch |err2| { + Output.printErrorln("error: Unable to open \"{s}\": \"{s}\"", .{ result.outbase, @errorName(err2) }); + std.os.exit(1); + }; + break :brk handle; + }; // On posix, file handles automatically close on process exit by the OS // Closing files shows up in profiling. // So don't do that unless we actually need to. @@ -360,8 +371,13 @@ pub const Cli = struct { .truncate = true, }) catch |err2| return err2); }; + try _handle.seekTo(0); + if (FeatureFlags.disable_filesystem_cache) { + _ = std.os.fcntl(_handle.handle, std.os.F_NOCACHE, 1) catch 0; + } + defer { if (do_we_need_to_close) { _handle.close(); |