lake 0.1.0

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 +7 -0
  2. data/bin/lake +47 -0
  3. data/lib/lake.rb +58 -0
  4. metadata +46 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cc994b1c2af334699efedd19ae5eefd997c26737
4
+ data.tar.gz: 43d33f16a4e529739791f2877b6363129dfe6a01
5
+ SHA512:
6
+ metadata.gz: bdab6359d107e42fe7ba0ed4c2ab4585cfd259d08223dccedf69baf91efd2676eb4903d45a5734f910e347ab850b6776a5c0eac4fd51ea7b8b8de8cffc173458
7
+ data.tar.gz: 49329059727483d4eab95b43299bfb307f9d73e9cda03d04e3c860e97cec33656685622a9d8ecf3c45a5d2573a36ecb6d2953af81ba13648988e3c61b3ba61f8
data/bin/lake ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'optparse'
4
+ require 'lake'
5
+
6
+ class Lake::Opts
7
+ class << self
8
+ attr_accessor :file,:target,:list,:show
9
+ end
10
+ end
11
+
12
+ Lake::Opts.file = "./Lakefile"
13
+
14
+ OptionParser.new do |o|
15
+ o.banner = "Lake - Make-style build system\n\n\tUsage : lake [-f file] [-Tvh] [target]"
16
+ o.on("-fFILE","--file=FILE","Specify a file"){|f|Lake::Opts.file=f}
17
+ o.on("-T","--list","List targets"){Lake::Opts.list=true}
18
+ o.on("-v","--version","Print version and exit"){puts "Lake v #{Lake::VERSION}"; exit}
19
+ o.on("-h","--help","Print this help"){puts o; exit}
20
+ o.on("-l","--code","Show code before executing"){Lake::Opts.show=true}
21
+ end.parse!
22
+
23
+ Lake::Opts.target = ARGV.pop || "all"
24
+
25
+ puts "[INFO] Lake started"
26
+ puts "[INFO] File is : #{File.expand_path Lake::Opts.file}"
27
+ if File.exists? File.expand_path Lake::Opts.file
28
+ code = "require 'lake'\ninclude Lake\n"+File.read(File.expand_path(Lake::Opts.file))
29
+ if Lake::Opts.show
30
+ puts code
31
+ 2.times do puts end
32
+ end
33
+ Dir.chdir File.dirname File.expand_path Lake::Opts.file
34
+ eval code
35
+ else
36
+ puts "[FATAL] File not found"
37
+ end
38
+
39
+ if Lake::Opts.list then
40
+ puts "[INFO] Available targets :"
41
+ puts "\t"+$targets.keys.where{|e|! e.flags[:hidden]}.join("\n\t")
42
+ else
43
+ puts "[INFO] Target is #{Lake::Opts.target}"
44
+ Lake::build Lake::Opts.target
45
+ end
46
+
47
+ puts "[INFO] Done!"
data/lib/lake.rb ADDED
@@ -0,0 +1,58 @@
1
+ $targets = {}
2
+
3
+ module Lake
4
+ VERSION='0.1.0 Beta'
5
+ Target = Struct.new(:name,:proc,:deps,:flags) do
6
+ def build
7
+ for d in deps
8
+ if proc or need_build?
9
+ $targets[d].build
10
+ else
11
+ puts "[INFO] #{d} is already built"
12
+ end
13
+ end
14
+ puts "[INFO] Building #{name}"
15
+ proc.call if proc
16
+ end
17
+
18
+ def need_build?
19
+ for dep in deps do
20
+ return true if $targets[dep].need_build?
21
+ end
22
+ (!dep)||(!File.exists? dep)||(flags[:unchecked])
23
+ end
24
+ end
25
+
26
+ def build(t)
27
+ $targets.each do
28
+ |k,tr|
29
+ tr.build if tr.need_build? and tr.flags[:mandatory]
30
+ end
31
+
32
+ if $targets[t] and not $targets[t].flags[:hidden]
33
+ $targets[t].build if $targets[t].need_build?
34
+ else
35
+ puts "[FATAL] No actions for target #{t}"
36
+ end
37
+ end
38
+
39
+ def target(name,*deps,&block)
40
+ $targets[name.to_s] = Target.new name,block,deps,{}
41
+ return name.to_s
42
+ end
43
+
44
+ def hidden(name)
45
+ $targets[name].flags[:hidden] = true
46
+ return name
47
+ end
48
+
49
+ def unchecked(name)
50
+ $targets[name].flags[:unchecked] = true
51
+ return name
52
+ end
53
+
54
+ def mandatory(name)
55
+ $targets[name].flags[:mandatory] = true
56
+ return name
57
+ end
58
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lake
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Stepan unn4m3d Melnikov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-14 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Lake - a Make-style build system with Ruby syntax
14
+ email: smelnikov871@gmail.com
15
+ executables:
16
+ - lake
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/lake
21
+ - lib/lake.rb
22
+ homepage: ''
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.5.1
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Lake - a Make-style build system
46
+ test_files: []