aboutsummaryrefslogtreecommitdiff
path: root/src/install/install.zig
diff options
context:
space:
mode:
authorGravatar Alex Lam S.L <alexlamsl@gmail.com> 2023-01-21 14:16:26 +0200
committerGravatar GitHub <noreply@github.com> 2023-01-21 04:16:26 -0800
commitf0fa760479ea14f6ebdd5ed724e267c538910a2e (patch)
treee65337e8f523f88c5e877f401bfd788fef179ace /src/install/install.zig
parent24e8aa105f9d5d55d560884eaa38dc2e51d403aa (diff)
downloadbun-f0fa760479ea14f6ebdd5ed724e267c538910a2e.tar.gz
bun-f0fa760479ea14f6ebdd5ed724e267c538910a2e.tar.zst
bun-f0fa760479ea14f6ebdd5ed724e267c538910a2e.zip
[semver] parse `^` & `~` expressions correctly (#1854)
* [semver] parse `^` & `~` expressions correctly * handle semver ranges correctly against build tags
Diffstat (limited to '')
-rw-r--r--src/install/install.zig13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/install/install.zig b/src/install/install.zig
index 4a46b80d7..076977aa8 100644
--- a/src/install/install.zig
+++ b/src/install/install.zig
@@ -1923,21 +1923,22 @@ pub const PackageManager = struct {
while (try iter.next()) |entry| {
if (entry.kind != .Directory and entry.kind != .SymLink) continue;
const name = entry.name;
- var sliced = SlicedString.init(name, name);
- var parsed = Semver.Version.parse(sliced, allocator);
+ const sliced = SlicedString.init(name, name);
+ const parsed = Semver.Version.parse(sliced, allocator);
if (!parsed.valid or parsed.wildcard != .none) continue;
// not handling OOM
// TODO: wildcard
- const total = parsed.version.tag.build.len() + parsed.version.tag.pre.len();
+ var version = parsed.version.fill();
+ const total = version.tag.build.len() + version.tag.pre.len();
if (total > 0) {
tags_buf.ensureUnusedCapacity(total) catch unreachable;
var available = tags_buf.items.ptr[tags_buf.items.len..tags_buf.capacity];
- const new_version = parsed.version.cloneInto(name, &available);
+ const new_version = version.cloneInto(name, &available);
tags_buf.items.len += total;
- parsed.version = new_version;
+ version = new_version;
}
- list.append(parsed.version) catch unreachable;
+ list.append(version) catch unreachable;
}
return list;