aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexander Kuznetsov <alexkuz@gmail.com> 2022-07-17 18:58:28 +0400
committerGravatar GitHub <noreply@github.com> 2022-07-17 07:58:28 -0700
commita85413c80207c9583e237672b48f9857d90159d5 (patch)
tree07559353425dceedb3be2b03779a9b4ef213f2b1
parent24a5f9ba290504895b5cd8b8a9a27a5800a7709c (diff)
downloadbun-a85413c80207c9583e237672b48f9857d90159d5.tar.gz
bun-a85413c80207c9583e237672b48f9857d90159d5.tar.zst
bun-a85413c80207c9583e237672b48f9857d90159d5.zip
fix scoped packages name resolution (#760)
Diffstat (limited to '')
-rw-r--r--src/install/install.zig10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/install/install.zig b/src/install/install.zig
index 764191e79..1f5cac408 100644
--- a/src/install/install.zig
+++ b/src/install/install.zig
@@ -3533,17 +3533,23 @@ pub const PackageManager = struct {
var unscoped_name = positional;
request.name = unscoped_name;
+ // request.name = "@package..." => unscoped_name = "package..."
if (unscoped_name.len > 0 and unscoped_name[0] == '@') {
unscoped_name = unscoped_name[1..];
}
+
+ // if there is a semver in package name...
if (std.mem.indexOfScalar(u8, unscoped_name, '@')) |i| {
+ // unscoped_name = "package@1.0.0" => request.name = "package"
request.name = unscoped_name[0..i];
+ // if package was scoped, put "@" back in request.name
if (unscoped_name.ptr != positional.ptr) {
- request.name = request.name[0 .. i + 1];
+ request.name = positional[0 .. i + 1];
}
- if (positional.len > i + 1) request.version_buf = positional[i + 1 ..];
+ // unscoped_name = "package@1.0.0" => request.version_buf = "1.0.0"
+ if (unscoped_name.len > i + 1) request.version_buf = unscoped_name[i + 1 ..];
}
if (strings.hasPrefix("http://", request.name) or