lake 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/lake +5 -2
  3. data/lib/lake.rb +36 -8
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38f6e28729daf5c8b2ac05938c4ee3cd475bcf65
4
- data.tar.gz: 949986028082aa4a48e85cc6078d54fa0cfe456b
3
+ metadata.gz: e476d8dbf3adbf64bf561556c54086d5a9c21e4d
4
+ data.tar.gz: af62a61eb0047c736153dda950e4b4154edc7377
5
5
  SHA512:
6
- metadata.gz: b75455b81042197b91d8bd23e0175279b32d3e86709dc696ee32dfcfdeee0f0a1d73292d2ea1356c806c96f1ab4bfe7db374acf994e4776394d98190e4f8231d
7
- data.tar.gz: f12127eb1e18d715df11eed4bad1a245b399f31e794c75491aa92dba8f15b1e94c97e105c0e7cebaa873eeb54ee0e0f7e72ada84be8cdac4cef064d4f6c8e871
6
+ metadata.gz: eacd9a888ddc08b0d22cf4c3264800b183a0478855b5d7840de27b3c9dd1c9e0bb7ce9ee67a6c9efe72c8ac3526fcafcc8a3bfac7ab98d63be9013dcd3ecc1f6
7
+ data.tar.gz: 93348ac50ff4fa98b13b7624ddaf83fd675c2b025905d28d8c12193d9ce0a6422c8918cb0700f41c69d2b9ac11dba35fbe66e873ab6103cb575a6099307b9e43
data/bin/lake CHANGED
@@ -5,7 +5,7 @@ require 'lake'
5
5
 
6
6
  class Lake::Opts
7
7
  class << self
8
- attr_accessor :file,:target,:list,:show
8
+ attr_accessor :file,:target,:list,:show,:rec_build
9
9
  end
10
10
  end
11
11
 
@@ -18,6 +18,9 @@ OptionParser.new do |o|
18
18
  o.on("-v","--version","Print version and exit"){puts "Lake v #{Lake::VERSION}"; exit}
19
19
  o.on("-h","--help","Print this help"){puts o; exit}
20
20
  o.on("-l","--code","Show code before executing"){Lake::Opts.show=true}
21
+ o.on("-r","--recursive-build","Build dependencies recursively (Lake <= 0.1.7 compat mode)"){
22
+ Lake::Opts.rec_build = true
23
+ }
21
24
  end.parse!
22
25
 
23
26
  Lake::Opts.target = ARGV.pop || "all"
@@ -42,7 +45,7 @@ if Lake::Opts.list then
42
45
  puts "\t"+$targets.keys.select{|e|! $targets[e.to_s].flags[:hidden]}.join("\n\t")
43
46
  else
44
47
  puts "[INFO] Target is #{Lake::Opts.target}"
45
- Lake::build_t Lake::Opts.target
48
+ Lake::build_t Lake::Opts.target, Lake::Opts.rec_build
46
49
  end
47
50
 
48
51
  puts "[INFO] Done!"
data/lib/lake.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  $targets = {}
2
2
 
3
3
  module Lake
4
- VERSION='0.1.7'
4
+ VERSION='0.1.8'
5
5
  Target = Struct.new(:name,:proc,:deps,:flags) do
6
- def build
6
+ def build(rec=true)
7
7
  if need_build? then
8
8
  puts "[INFO] Building #{name}"
9
9
  deps.each{
10
10
  |e|
11
- $targets[e.to_s].build
11
+ $targets[e.to_s].build if rec or $targets[e.to_s].flags[:unchecked]
12
12
  }
13
13
  proc.call if proc
14
14
  else
@@ -35,17 +35,45 @@ module Lake
35
35
  end
36
36
  end
37
37
 
38
- def build_t(t)
38
+ def calc_deps(t)
39
+ arr = []
40
+ puts "[INFO] Calculating dependencies for #{t}"
41
+ $targets[t.to_s].deps.each do
42
+ |d|
43
+ arr << d if $targets[d.to_s].need_build?
44
+ arr += calc_deps(d)
45
+ end
46
+ arr.uniq
47
+ end
48
+
49
+ def build_t(t,rec=false)
39
50
  $targets.each do
40
51
  |k,tr|
41
- tr.build if tr.need_build? and tr.flags[:mandatory]
52
+ tr.build(rec) if tr.need_build? and tr.flags[:mandatory]
42
53
  end
43
54
 
44
- if $targets[t] and not $targets[t].flags[:hidden]
45
- $targets[t].build if $targets[t].need_build?
55
+ if rec then
56
+ if $targets[t] and not $targets[t].flags[:hidden]
57
+ $targets[t].build if $targets[t].need_build?
58
+ else
59
+ puts "[FATAL] No actions for target #{t}"
60
+ end
46
61
  else
47
- puts "[FATAL] No actions for target #{t}"
62
+ deps = calc_deps(t)
63
+ deps.each{
64
+ |d|
65
+ if $targets[d.to_s] then
66
+ $targets[d.to_s].build rec
67
+ elsif File.exists? d.to_s then
68
+ puts "[INFO] File dependency #{d} satisfied"
69
+ else
70
+ puts "[FATAL] Cannot satisfy dependency #{d}"
71
+ end
72
+ }
48
73
  end
74
+
75
+
76
+
49
77
  end
50
78
 
51
79
  def target(name,*deps,&block)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stepan unn4m3d Melnikov