Skip to content

Commit 7fda97d

Browse files
committed
Fix: resolve dependencies at git refs (commit, branch, tag)
1 parent 7cbf91c commit 7fda97d

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

src/commands/install.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ module Shards
9191

9292
private def outdated_lockfile?(packages)
9393
a = packages.map { |x| {x.name, x.version, x.commit} }
94-
b = locks.map { |x| {x.name, x["version"], x["commit"]?} }
94+
b = locks.map { |x| {x.name, x["version"]?, x["commit"]?} }
9595
a != b
9696
end
9797
end

src/solver.cr

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@ module Shards
1717

1818
def prepare(development = true) : Nil
1919
@graph.add(@spec, development)
20+
21+
if locks = @locks
22+
locks.each do |lock|
23+
if lock["commit"]?
24+
@graph.add(lock)
25+
end
26+
end
27+
end
28+
2029
build_cnf_clauses(development)
2130
end
2231

@@ -76,7 +85,7 @@ module Shards
7685

7786
if plus = str.index("+git.commit.")
7887
version = str[(colon + 1)...plus]
79-
commit = str[(plus + 13)..-1]
88+
commit = str[(plus + 12)..-1]
8089
else
8190
version = str[(colon + 1)..-1]
8291
commit = nil
@@ -192,7 +201,7 @@ module Shards
192201
if locked = @locks.try(&.find { |d| d.name == pkg.name })
193202
# determine position of locked version to use it as reference:
194203
pkg.each_version do |version, index|
195-
if version == locked.version
204+
if version == locked.version || ((commit = locked["commit"]?) && version.ends_with?("+git.commit.#{commit}"))
196205
position = index
197206
break
198207
end

src/solver/graph.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ module Shards
5050
spec.development_dependencies.each { |dependency| add(dependency) } if development
5151
end
5252

53-
private def add(dependency : Dependency)
53+
def add(dependency : Dependency)
5454
pkg = @packages[dependency.name] ||= Pkg.new(dependency)
5555
resolver = pkg.resolver
5656

0 commit comments

Comments
 (0)