-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathRakefile
More file actions
100 lines (78 loc) · 3.08 KB
/
Rakefile
File metadata and controls
100 lines (78 loc) · 3.08 KB
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
require 'bundler'
Bundler.require
require 'fileutils'
$LOAD_PATH << 'vendor/opal/lib'
require 'opal/builder'
require 'opal/sprockets'
desc 'Create directory if needed'
task :'build:setup' do
Dir.mkdir 'JavaScriptCoreOpalAdditions/Opal.bundle' unless File.directory? 'JavaScriptCoreOpalAdditions/Opal.bundle'
Dir.mkdir 'javascripts' unless File.directory? 'javascripts'
Dir.mkdir 'javascripts/ruby' unless File.directory? 'javascripts/ruby'
end
desc 'Build opal.js and opal-parser.js'
task :'build:opal' => :'build:setup' do
Opal::Processor.arity_check_enabled = false
Opal::Processor.const_missing_enabled = false
env = Opal::Environment.new
Dir.mkdir 'javascripts' unless File.directory? 'javascripts'
libs = Dir['vendor/opal/{opal,stdlib}/opal*.rb'].map { |lib| File.basename(lib, '.rb') }
width = libs.map(&:size).max
libs.each do |lib|
print "* building #{lib}...".ljust(width+'* building ... '.size)
$stdout.flush
src = env[lib].to_s
min = Uglifier.compile src, comments: "none"
File.open("javascripts/#{lib}.js", 'w+') { |f| f << min } if min
print "done. ("
print "#{('%.2f' % (src.size/1000.0)).rjust(6)}KB"
print ", minified: #{('%.2f' % (min.size/1000.0)).rjust(6)}KB" if min
puts ")."
end
end
desc 'Build opal Objective-c additions into javascripts/opal-objc.js'
task :'build:objc' => :'build:setup' do
Opal::Processor.arity_check_enabled = false
Opal::Processor.const_missing_enabled = false
env = Opal::Environment.new
env.append_path "ruby"
libs = Dir['ruby/*.rb'].map { |lib| File.basename(lib, '.rb') }
width = libs.map(&:size).max
libs.each do |lib|
print "* building #{lib}...".ljust(width+'* building ... '.size)
$stdout.flush
src = env[lib].to_s
min = Uglifier.compile src, comments: "none"
File.open("javascripts/ruby/#{lib}.js", 'w+') { |f| f << min } if min
print "done. ("
print "#{('%.2f' % (src.size/1000.0)).rjust(6)}KB"
print ", minified: #{('%.2f' % (min.size/1000.0)).rjust(6)}KB" if min
puts ")."
end
print "* building opal-objc.js "
src = Dir['javascripts/ruby/*.js'].collect {|file| open(file).read }.join("\n")
File.open("javascripts/opal-objc.js", 'w+') { |f| f << src } if src
print "done. ("
print "#{('%.2f' % (src.size/1000.0)).rjust(6)}KB"
puts ")."
end
desc 'Copy stdlib resources into Opal.bundle'
task :'stdlib' => [:'build:setup'] do
print "* building Opal.bundle "
Dir["JavaScriptCoreOpalAdditions/Opal.bundle/*"].each do |file|
FileUtils.rm file
end
Dir['javascripts/opal-all.js', 'vendor/opal/stdlib/*.rb'].each do |file|
FileUtils.cp file, "JavaScriptCoreOpalAdditions/Opal.bundle"
end
end
desc 'Build javascript/opal-all.js'
task :'dist' => [:'build:setup', :'build:opal', :'build:objc', :'stdlib'] do
print "* building opal-all.js "
src = Dir['javascripts/{opal.js,opal-parser.js,opal-objc.js}'].collect {|file| open(file).read }.join("\n")
File.open("javascripts/opal-all.js", 'w+') { |f| f << src } if src
print "done. ("
print "#{('%.2f' % (src.size/1000.0)).rjust(6)}KB"
puts ")."
end
task :default => :'dist'