aboutsummaryrefslogtreecommitdiff
path: root/src/install
diff options
context:
space:
mode:
Diffstat (limited to 'src/install')
-rw-r--r--src/install/install.zig22
-rw-r--r--src/install/lockfile.zig2
-rw-r--r--src/install/npm.zig60
-rw-r--r--src/install/resolvers/folder_resolver.zig2
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.*;
};