diff options
Diffstat (limited to 'src/install')
-rw-r--r-- | src/install/install.zig | 22 | ||||
-rw-r--r-- | src/install/lockfile.zig | 2 | ||||
-rw-r--r-- | src/install/npm.zig | 60 | ||||
-rw-r--r-- | src/install/resolvers/folder_resolver.zig | 2 |
4 files changed, 40 insertions, 46 deletions
diff --git a/src/install/install.zig b/src/install/install.zig index ea555eb5d..1e04a8932 100644 --- a/src/install/install.zig +++ b/src/install/install.zig @@ -694,7 +694,7 @@ const PackageInstall = struct { var package_json_path: [:0]u8 = this.destination_dir_subpath_buf[0 .. this.destination_dir_subpath.len + std.fs.path.sep_str.len + "package.json".len :0]; defer this.destination_dir_subpath_buf[this.destination_dir_subpath.len] = 0; - var package_json_file = this.destination_dir.openFileZ(package_json_path, .{ .read = true }) catch return false; + var package_json_file = this.destination_dir.openFileZ(package_json_path, .{ .mode = .read_only }) catch return false; defer package_json_file.close(); var body_pool = Npm.Registry.BodyPool.get(allocator); @@ -944,7 +944,7 @@ const PackageInstall = struct { }; defer outfile.close(); - var infile = try entry.dir.openFile(entry.basename, .{ .read = true }); + var infile = try entry.dir.openFile(entry.basename, .{ .mode = .read_only }); defer infile.close(); const stat = infile.stat() catch continue; @@ -3176,7 +3176,7 @@ pub const PackageManager = struct { } else { // can't use orelse due to a stage1 bug - package_json_file = std.fs.cwd().openFileZ("package.json", .{ .read = true, .write = true }) catch brk: { + package_json_file = std.fs.cwd().openFileZ("package.json", .{ .mode = .read_write }) catch brk: { var this_cwd = original_cwd; outer: while (std.fs.path.dirname(this_cwd)) |parent| { cwd_buf[parent.len] = 0; @@ -3188,7 +3188,7 @@ pub const PackageManager = struct { return err; }; - break :brk std.fs.cwd().openFileZ("package.json", .{ .read = true, .write = true }) catch { + break :brk std.fs.cwd().openFileZ("package.json", .{ .mode = .read_write }) catch { this_cwd = parent; continue :outer; }; @@ -3612,9 +3612,7 @@ pub const PackageManager = struct { switch (err) { error.MissingPackageJSON => { if (op == .add or op == .update) { - var package_json_file = std.fs.cwd().createFileZ("package.json", .{ - .read = true, - }) catch |err2| { + var package_json_file = std.fs.cwd().createFileZ("package.json", .{ .read = true }) catch |err2| { Output.prettyErrorln("<r><red>error:<r> {s} create package.json", .{@errorName(err2)}); Global.crash(); }; @@ -3989,7 +3987,7 @@ pub const PackageManager = struct { node_modules_buf[entry.name.len] = 0; var buf: [:0]u8 = node_modules_buf[0..entry.name.len :0]; - var file = node_modules_bin.openFileZ(buf, .{ .read = true }) catch { + var file = node_modules_bin.openFileZ(buf, .{ .mode = .read_only }) catch { node_modules_bin.deleteFileZ(buf) catch {}; continue :iterator; }; @@ -4285,7 +4283,7 @@ pub const PackageManager = struct { var progress = &this.progress; if (comptime log_level.showProgress()) { - root_node = try progress.start("", 0); + root_node = progress.start("", 0); progress.supports_ansi_escape_codes = Output.enable_ansi_colors_stderr; download_node = root_node.start(ProgressStrings.download(), 0); @@ -4781,7 +4779,7 @@ pub const PackageManager = struct { } if (comptime log_level.showProgress()) { - manager.downloads_node = try manager.progress.start(ProgressStrings.download(), 0); + manager.downloads_node = manager.progress.start(ProgressStrings.download(), 0); manager.progress.supports_ansi_escape_codes = Output.enable_ansi_colors_stderr; manager.setNodeName(manager.downloads_node.?, ProgressStrings.download_no_emoji_, ProgressStrings.download_emoji, true); manager.downloads_node.?.setEstimatedTotalItems(manager.total_tasks + manager.extracted_count); @@ -4879,7 +4877,7 @@ pub const PackageManager = struct { var node: *Progress.Node = undefined; if (comptime log_level.showProgress()) { - node = try manager.progress.start(ProgressStrings.save(), 0); + node = manager.progress.start(ProgressStrings.save(), 0); manager.progress.supports_ansi_escape_codes = Output.enable_ansi_colors_stderr; node.activate(); @@ -4910,7 +4908,7 @@ pub const PackageManager = struct { if (manager.options.do.save_yarn_lock) { var node: *Progress.Node = undefined; if (comptime log_level.showProgress()) { - node = try manager.progress.start("Saving yarn.lock", 0); + node = manager.progress.start("Saving yarn.lock", 0); manager.progress.supports_ansi_escape_codes = Output.enable_ansi_colors_stderr; manager.progress.refresh(); } diff --git a/src/install/lockfile.zig b/src/install/lockfile.zig index e4f9bda78..382f759da 100644 --- a/src/install/lockfile.zig +++ b/src/install/lockfile.zig @@ -136,7 +136,7 @@ pub fn loadFromDisk(this: *Lockfile, allocator: std.mem.Allocator, log: *logger. var file = std.io.getStdIn(); if (filename.len > 0) - file = std.fs.cwd().openFileZ(filename, .{ .read = true }) catch |err| { + file = std.fs.cwd().openFileZ(filename, .{ .mode = .read_only }) catch |err| { return switch (err) { error.FileNotFound, error.AccessDenied, error.BadPathName => LoadFromDiskResult{ .not_found = .{} }, else => LoadFromDiskResult{ .err = .{ .step = .open_file, .value = err } }, diff --git a/src/install/npm.zig b/src/install/npm.zig index 44cf0d4ed..2dcc94686 100644 --- a/src/install/npm.zig +++ b/src/install/npm.zig @@ -30,6 +30,7 @@ const VersionSlice = @import("./install.zig").VersionSlice; const ObjectPool = @import("../pool.zig").ObjectPool; const Api = @import("../api/schema.zig").Api; const DotEnv = @import("../env_loader.zig"); +const ComptimeStringMap = @import("../comptime_string_map.zig").ComptimeStringMap; const Npm = @This(); @@ -267,7 +268,16 @@ pub const OperatingSystem = enum(u16) { } } - const Matcher = strings.ExactSizeMatcher(8); + const NameMap = ComptimeStringMap(u16, .{ + .{ "aix", aix }, + .{ "darwin", darwin }, + .{ "freebsd", freebsd }, + .{ "linux", linux }, + .{ "openbsd", openbsd }, + .{ "sunos", sunos }, + .{ "win32", win32 }, + .{ "android", android }, + }); pub fn apply(this_: OperatingSystem, str: []const u8) OperatingSystem { if (str.len == 0) { @@ -277,19 +287,8 @@ pub const OperatingSystem = enum(u16) { const is_not = str[0] == '!'; const offset: usize = if (str[0] == '!') 1 else 0; - const input = str[offset..]; - const field: u16 = switch (Matcher.match(input)) { - Matcher.case("aix") => aix, - Matcher.case("darwin") => darwin, - Matcher.case("freebsd") => freebsd, - Matcher.case("linux") => linux, - Matcher.case("openbsd") => openbsd, - Matcher.case("sunos") => sunos, - Matcher.case("win32") => win32, - Matcher.case("android") => android, - else => return this_, - }; + const field: u16 = NameMap.get(str[offset..]) orelse return this_; if (is_not) { return @intToEnum(OperatingSystem, this & ~field); @@ -320,6 +319,20 @@ pub const Architecture = enum(u16) { pub const all_value: u16 = arm | arm64 | ia32 | mips | mipsel | ppc | ppc64 | s390 | s390x | x32 | x64; + const NameMap = ComptimeStringMap(u16, .{ + .{ "arm", arm }, + .{ "arm64", arm64 }, + .{ "ia32", ia32 }, + .{ "mips", mips }, + .{ "mipsel", mipsel }, + .{ "ppc", ppc }, + .{ "ppc64", ppc64 }, + .{ "s390", s390 }, + .{ "s390x", s390x }, + .{ "x32", x32 }, + .{ "x64", x64 }, + }); + pub fn isMatch(this: Architecture) bool { if (comptime Environment.isAarch64) { return (@enumToInt(this) & arm64) != 0; @@ -330,8 +343,6 @@ pub const Architecture = enum(u16) { } } - const Matcher = strings.ExactSizeMatcher(8); - pub fn apply(this_: Architecture, str: []const u8) Architecture { if (str.len == 0) { return this_; @@ -342,20 +353,7 @@ pub const Architecture = enum(u16) { const offset: usize = if (str[0] == '!') 1 else 0; const input = str[offset..]; - const field: u16 = switch (Matcher.match(input)) { - Matcher.case("arm") => arm, - Matcher.case("arm64") => arm64, - Matcher.case("ia32") => ia32, - Matcher.case("mips") => mips, - Matcher.case("mipsel") => mipsel, - Matcher.case("ppc") => ppc, - Matcher.case("ppc64") => ppc64, - Matcher.case("s390") => s390, - Matcher.case("s390x") => s390x, - Matcher.case("x32") => x32, - Matcher.case("x64") => x64, - else => return this_, - }; + const field: u16 = NameMap.get(input) orelse return this_; if (is_not) { return @intToEnum(Architecture, this & ~field); @@ -570,9 +568,7 @@ pub const PackageManifest = struct { var file_path = try std.fmt.bufPrintZ(&file_path_buf, "{x}.npm", .{file_id}); var cache_file = cache_dir.openFileZ( file_path, - .{ - .read = true, - }, + .{ .mode = .read_only }, ) catch return null; var timer: std.time.Timer = undefined; if (PackageManager.verbose_install) { diff --git a/src/install/resolvers/folder_resolver.zig b/src/install/resolvers/folder_resolver.zig index d988dc05a..59cddf206 100644 --- a/src/install/resolvers/folder_resolver.zig +++ b/src/install/resolvers/folder_resolver.zig @@ -78,7 +78,7 @@ pub const FolderResolution = union(Tag) { joined[abs.len] = 0; var joinedZ: [:0]u8 = joined[0..abs.len :0]; - var package_json: std.fs.File = std.fs.cwd().openFileZ(joinedZ, .{ .read = true }) catch |err| { + var package_json: std.fs.File = std.fs.cwd().openFileZ(joinedZ, .{ .mode = .read_only }) catch |err| { entry.value_ptr.* = .{ .err = err }; return entry.value_ptr.*; }; |