-
Notifications
You must be signed in to change notification settings - Fork 1
/
Rakefile
114 lines (86 loc) · 2.22 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
require 'rake/clean'
ERL_VER = 'R14B03'
ERL_HOME = "/usr/local/Cellar/erlang/#{ERL_VER}/bin"
abort "Please install Erlang #{ERL_VER}: brew update; brew install erlang" unless File.exist?(ERL_HOME)
# Set PATH to use newer Erlang
ENV["PATH"] = ERL_HOME + ":" + ENV["PATH"]
APPS_EBINS = Dir["ebin"]
LIBS_EBINS = Dir["/usr/local/lib/erlang/lib/*/ebin"]
ALL_EBINS = APPS_EBINS + LIBS_EBINS
INCLUDE_DIRS = Dir["include"] unless defined?(INCLUDE_DIRS)
CLEAN.include("ebin/*.beam")
CLEAN.include("*/.eunit")
CLOBBER.include("ebin/*.beam")
FLAGS = %w(
+warn_unused_vars
+warn_export_all
+warn_shadow_vars
+warn_unused_import
+warn_unused_function
+warn_bif_clash
+warn_unused_record
+warn_deprecated_function
+warn_obsolete_guard
+strict_validation
+warn_export_vars
+warn_exported_vars
+warn_missing_spec
+warn_untyped_record
+debug_info
).join(' ') unless defined?(FLAGS)
ERLC_FLAGS = INCLUDE_DIRS.map { |i| "-I#{i}" }.join(' ') + " -Ideps #{FLAGS}" unless defined?(ERLC_FLAGS)
SRC = FileList['src/*.erl']
OBJ = SRC.pathmap("%{src,ebin}X.beam")
rule ".beam" => ["%{ebin,src}X.erl"] do |t|
ebin = File.dirname(t.name)
sh "erlc -W #{ERLC_FLAGS} -o #{ebin} #{t.source}"
end
task :default => :compile
desc "Watch files for changes and compile them"
task :watch do
sh("bundle exec watchr Watchfile")
end
desc "Get deps and compile"
task :compile => ['rebar:get_deps', 'rebar:compile']
task :default => :compile
desc "Run tests"
task :test => ['rebar:eunit']
namespace :rebar do
task :compile do
rebar :compile
end
task :clean do
rebar :clean
end
task :build_plt do
rebar 'build-plt', { skip_deps: true }
end
task :check_plt do
rebar 'check_plt', { skip_deps: true }
end
task :dialyze do
rebar :dialyze, { skip_deps: true }
end
task :xref do
rebar :xref, { skip_deps: true }
end
task :get_deps do
rebar 'get-deps'
end
task :update_deps do
rebar 'update-deps'
end
task :delete_deps do
rebar 'delete-deps'
end
task :generate do
rebar :generate
end
task :eunit do
rebar :eunit, { skip_deps: true }
end
def rebar(cmd, opts = {})
rebar_opts = opts.map { |k, v| "#{k}=#{v}" }.join(' ')
sh "./bin/colorize ./rebar #{cmd} #{rebar_opts}"
end
end