@@ -4,29 +4,18 @@ require "../solver"
4
4
module Shards
5
5
module Commands
6
6
class Lock < Command
7
- def run
7
+ def run (print = false )
8
+ Shards .logger.info { " Resolving dependencies" }
9
+
8
10
solver = Solver .new(spec)
9
11
solver.prepare(development: ! Shards .production?)
10
12
11
13
if solution = solver.solve
12
- Shards .logger.info { " Found solution:" }
13
-
14
- puts " version: 1.1"
15
- puts " shards:"
16
-
17
- solution.sort_by!(& .name).each do |rs |
18
- key = rs.resolver.class.key
19
-
20
- puts " #{ rs.name } :"
21
- puts " #{ key } : #{ rs.resolver.dependency[key] } "
22
-
23
- if rs.commit
24
- puts " commit: #{ rs.commit } "
25
- else
26
- puts " version: #{ rs.version } " unless rs.commit
27
- end
28
-
29
- puts
14
+ if print
15
+ to_lockfile(solution, STDOUT )
16
+ else
17
+ Shards .logger.info { " Writing #{ LOCK_FILENAME } " }
18
+ File .open(LOCK_FILENAME , " w" ) { |file | to_lockfile(solution, file) }
30
19
end
31
20
else
32
21
solver.each_conflict do |message |
@@ -35,6 +24,26 @@ module Shards
35
24
Shards .logger.error { " Failed to find a solution" }
36
25
end
37
26
end
27
+
28
+ private def to_lockfile (solution , io )
29
+ io << " version: 1.1\n "
30
+ io << " shards:\n "
31
+
32
+ solution.sort_by!(& .name).each do |rs |
33
+ key = rs.resolver.class.key
34
+
35
+ io << " " << rs.name << " :\n "
36
+ io << " " << key << " : " << rs.resolver.dependency[key] << '\n'
37
+
38
+ if rs.commit
39
+ io << " commit: " << rs.commit << '\n'
40
+ else
41
+ io << " version: " << rs.version << '\n'
42
+ end
43
+
44
+ puts
45
+ end
46
+ end
38
47
end
39
48
end
40
49
end
0 commit comments