-
Notifications
You must be signed in to change notification settings - Fork 1
/
Rakefile
79 lines (61 loc) · 1.53 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
require 'fileutils'
include FileUtils
BIN_DIR = "#{__dir__}/node_modules/.bin".freeze
def cmd_exists?(cmd)
File.exists?(cmd) && File.executable?(cmd)
end
def ensure_cmd(cmd)
paths = ENV['PATH'].split(':').uniq
found = paths.find {|p| cmd_exists? "#{p}/#{cmd}" }
return "#{found}/#{cmd}" if found
return "#{BIN_DIR}/#{cmd}" if cmd_exists?"#{BIN_DIR}/#{cmd}"
raise "'#{cmd}' command doesn't exist"
end
task :dep do
sh 'npm install --dev'
end
task :slimrb do
slimrb = ensure_cmd 'slimrb'
mkdir_p 'build/static'
Dir['static/*.slim'].each do |slim_file|
sh slimrb, slim_file, "build/static/#{File.basename(slim_file, '.slim')}.html"
end
end
task :tsd do
tsd = ensure_cmd 'tsd'
sh tsd, 'install'
end
task :tsc do
tsc = ensure_cmd 'tsc'
sh "#{tsc} -p browser"
sh "#{tsc} renderer/*.ts --out build/renderer/index.js"
end
task :build => %i(slimrb tsd tsc)
task :npm_publish => %i(build) do
mkdir 'npm-publish'
%w(package.json build bin README.md).each{|p| cp_r p, 'npm-publish' }
cd 'npm-publish' do
sh 'npm install --save electron-prebuilt'
sh 'npm publish'
end
rm_rf 'npm-publish'
end
task :asar => %i(build) do
asar = ensure_cmd 'asar'
mkdir_p 'archive'
begin
%w(package.json build).each{|p| cp_r p, 'archive' }
cd 'archive' do
sh 'npm install --production'
end
sh "#{asar} pack archive app.asar"
ensure
rm_rf 'archive'
end
end
task :run => %i(build) do
sh "#{__dir__}/bin/cli.js"
end
task :clean do
%w(npm-publish build archive).each{|tmpdir| rm_rf tmpdir}
end