forked from mikaukora/rcc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRakefile
More file actions
136 lines (115 loc) · 3.65 KB
/
Rakefile
File metadata and controls
136 lines (115 loc) · 3.65 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
if Rake::Win32.windows? then
PYTHON='python'
LS='dir'
WHICH='where'
else
PYTHON='python3'
LS='ls -l'
WHICH='which -a'
end
desc 'Show latest HEAD with stats'
task :what do
sh 'go version'
sh 'git --no-pager log -2 --stat HEAD'
end
task :tooling do
puts "PATH is #{ENV['PATH']}"
puts "GOPATH is #{ENV['GOPATH']}"
puts "GOROOT is #{ENV['GOROOT']}"
sh "#{WHICH} git || echo NA"
sh "#{WHICH} sed || echo NA"
sh "#{WHICH} zip || echo NA"
end
task :noassets do
rm_f FileList['blobs/assets/micromamba.*']
rm_f FileList['blobs/assets/*.zip']
rm_f FileList['blobs/assets/*.yaml']
rm_f FileList['blobs/assets/*.py']
rm_f FileList['blobs/assets/man/*.txt']
rm_f FileList['blobs/docs/*.md']
end
def download_link(version, platform, filename)
"https://downloads.robocorp.com/micromamba/#{version}/#{platform}/#{filename}"
end
task :micromamba do
version = File.read('assets/micromamba_version.txt').strip()
puts "Using micromamba version #{version}"
url = download_link(version, "macos64", "micromamba")
sh "curl -o blobs/assets/micromamba.darwin_amd64 #{url}"
url = download_link(version, "windows64", "micromamba.exe")
sh "curl -o blobs/assets/micromamba.windows_amd64 #{url}"
url = download_link(version, "linux64", "micromamba")
sh "curl -o blobs/assets/micromamba.linux_amd64 #{url}"
sh "gzip -f -9 blobs/assets/micromamba.*"
end
task :assets => [:noassets, :micromamba] do
FileList['templates/*/'].each do |directory|
basename = File.basename(directory)
assetname = File.absolute_path(File.join("blobs", "assets", "#{basename}.zip"))
rm_rf assetname
puts "Directory #{directory} => #{assetname}"
sh "cd #{directory} && zip -ryqD9 #{assetname} ."
end
cp FileList['assets/*.txt'], 'blobs/assets/'
cp FileList['assets/*.yaml'], 'blobs/assets/'
cp FileList['assets/*.py'], 'blobs/assets/'
cp FileList['assets/man/*.txt'], 'blobs/assets/man/'
cp FileList['docs/*.md'], 'blobs/docs/'
end
task :clean do
sh 'rm -rf build/'
end
desc 'Update table of contents on docs/ directory.'
task :toc do
sh "#{PYTHON} scripts/toc.py"
end
task :support => [:toc] do
sh 'mkdir -p tmp build/linux64 build/macos64 build/windows64'
end
desc 'Run tests.'
task :test => [:support, :assets] do
sh 'go test -cover -coverprofile=tmp/cover.out ./...'
sh 'go tool cover -func=tmp/cover.out'
end
task :linux64 => [:what, :test] do
ENV['GOOS'] = 'linux'
ENV['GOARCH'] = 'amd64'
sh "go build -ldflags '-s' -o build/linux64/ ./cmd/..."
sh "sha256sum build/linux64/* || true"
end
task :macos64 => [:support] do
ENV['GOOS'] = 'darwin'
ENV['GOARCH'] = 'amd64'
sh "go build -ldflags '-s' -o build/macos64/ ./cmd/..."
sh "sha256sum build/macos64/* || true"
end
task :windows64 => [:support] do
ENV['GOOS'] = 'windows'
ENV['GOARCH'] = 'amd64'
sh "go build -ldflags '-s' -o build/windows64/ ./cmd/..."
sh "sha256sum build/windows64/* || true"
end
desc 'Setup build environment'
task :robotsetup do
sh "#{PYTHON} -m pip install --upgrade -r robot_requirements.txt"
sh "#{PYTHON} -m pip freeze"
end
desc 'Build local, operating system specific rcc'
task :local => [:tooling, :test] do
sh "go build -o build/ ./cmd/..."
end
desc 'Run robot tests on local application'
task :robot => :local do
sh "robot -L DEBUG -d tmp/output robot_tests"
end
desc 'Build commands to linux, macos, and windows.'
task :build => [:tooling, :version_txt, :linux64, :macos64, :windows64] do
sh 'ls -l $(find build -type f)'
end
def version
`sed -n -e '/Version/{s/^.*\`v//;s/\`$//p}' common/version.go`.strip
end
task :version_txt => :support do
File.write('build/version.txt', "v#{version}")
end
task :default => :build