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.
- checksums.yaml +7 -0
- data/bin/lake +47 -0
- data/lib/lake.rb +58 -0
- 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: []
|