diff options
author | 2023-02-13 00:44:39 +0200 | |
---|---|---|
committer | 2023-02-12 14:44:39 -0800 | |
commit | cdbc620104b939f7112fa613ca192e5fe6e02a7d (patch) | |
tree | cf852756dff005dfa385e9dabfc794bf47c29379 /src | |
parent | bb2aaa36fb9e673b23f60345fbba39b5ccc3d3f0 (diff) | |
download | bun-cdbc620104b939f7112fa613ca192e5fe6e02a7d.tar.gz bun-cdbc620104b939f7112fa613ca192e5fe6e02a7d.tar.zst bun-cdbc620104b939f7112fa613ca192e5fe6e02a7d.zip |
[install] support `git://github.com/` dependencies (#2059)
Diffstat (limited to 'src')
-rw-r--r-- | src/install/dependency.zig | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/install/dependency.zig b/src/install/dependency.zig index 973a8b997..dee062e85 100644 --- a/src/install/dependency.zig +++ b/src/install/dependency.zig @@ -187,7 +187,7 @@ pub const Version = struct { } pub fn isLessThan(string_buf: []const u8, lhs: Dependency.Version, rhs: Dependency.Version) bool { - if (Environment.allow_assert) std.debug.assert(lhs.tag == rhs.tag); + if (comptime Environment.allow_assert) std.debug.assert(lhs.tag == rhs.tag); return strings.cmpStringsAsc({}, lhs.literal.slice(string_buf), rhs.literal.slice(string_buf)); } @@ -375,7 +375,13 @@ pub const Version = struct { if (url.len > 2) { switch (url[0]) { ':' => { - if (strings.hasPrefixComptime(url, "://")) return .git; + if (strings.hasPrefixComptime(url, "://")) { + url = url["://".len..]; + if (strings.hasPrefixComptime(url, "github.com/")) { + if (isGitHubRepoPath(url["github.com/".len..])) return .github; + } + return .git; + } }, '+' => { if (strings.hasPrefixComptime(url, "+ssh:") or @@ -670,7 +676,7 @@ pub fn parseWithTag( alias; // name should never be empty - if (Environment.allow_assert) std.debug.assert(!actual.isEmpty()); + if (comptime Environment.allow_assert) std.debug.assert(!actual.isEmpty()); return .{ .literal = sliced.value(), @@ -688,6 +694,9 @@ pub fn parseWithTag( var input = dependency; if (strings.hasPrefixComptime(input, "github:")) { input = input["github:".len..]; + } else if (strings.hasPrefixComptime(input, "git://github.com/")) { + input = input["git://github.com/".len..]; + from_url = true; } else { if (strings.hasPrefixComptime(input, "git+")) { input = input["git+".len..]; @@ -716,7 +725,7 @@ pub fn parseWithTag( } } - if (Environment.allow_assert) std.debug.assert(Version.Tag.isGitHubRepoPath(input)); + if (comptime Environment.allow_assert) std.debug.assert(Version.Tag.isGitHubRepoPath(input)); var hash_index: usize = 0; var slash_index: usize = 0; |