-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRakefile
More file actions
97 lines (80 loc) · 2.05 KB
/
Rakefile
File metadata and controls
97 lines (80 loc) · 2.05 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
#!/usr/bin/env ruby
# -*- ruby -*-
require 'rake/clean'
CLOBBER.include("pkg")
LABS = FileList['labs/*'].select { |fn|
fn.pathmap("%f") =~ /^\d\d[a-z]?_/
}.reject { |fn|
fn =~ /todo|tgz/
}
DAILIES = {
"pkg/day01" => LABS.select { |fn|
fn =~ /^labs\/0[123]/
},
"pkg/day02" => LABS.select { |fn|
fn =~ /^labs\/(0[^123]|[^0])/
},
"pkg/all_labs" => LABS,
}
TAR_FILES = LABS.pathmap("pkg/%f.tgz")
ZIP_FILES = LABS.pathmap("pkg/%f.zip")
PACKAGE_FILES = TAR_FILES + ZIP_FILES +
DAILIES.keys.map { |fn| "#{fn}.tgz" } +
DAILIES.keys.map { |fn| "#{fn}.zip" }
task :noop
desc "default action => :package"
task :default => :package
desc "Create the package files for the labs"
task :package => [:cleanse_labs] + PACKAGE_FILES
desc "Clease the lab directories before packaging"
task :cleanse_labs do
rm FileList[
'labs/**/*.log',
'labs/**/*.sqlite3',
'labs/**/*.sqlite3-journal',
]
FileList['labs/**/coverage'].each do |fn|
rm_r fn
end
end
desc "Create the daily packages"
task :dailies => [:cleanse_labs, "pkg", "pkg/day01.zip", "pkg/day02.zip"]
directory "pkg"
TAR_FILES.each do |tarfn|
labfn = tarfn.pathmap("labs/%n")
file tarfn => ["pkg", labfn] do |t|
sh "tar zcvf #{tarfn} #{labfn}"
end
end
ZIP_FILES.each do |zipfn|
labfn = zipfn.pathmap("labs/%n")
file zipfn => ["pkg", labfn] do |t|
chdir("labs") do
sh "zip -r ../#{zipfn} #{labfn.pathmap("%f")}"
end
end
end
DAILIES.each do |key, labs|
tarfn = "#{key}.tgz"
file tarfn => labs do
sh "tar zcvf #{tarfn} #{labs}"
end
end
DAILIES.each do |key, labs|
zipfn = "#{key}.zip"
file zipfn => labs do
labs = labs.map { |fn| fn.pathmap("%f") }
Dir.chdir("labs") do
sh "zip -r ../pkg/#{zipfn.pathmap('%f')} #{labs}"
end
end
end
DOWNLOAD_HOST = 'linode'
DOWNLOAD_DIR = 'htdocs/test_studio'
DOWNLOAD_SITE = "#{DOWNLOAD_HOST}:#{DOWNLOAD_DIR}"
desc "Upload all the packages to the web site"
task :upload do
sh "ssh #{DOWNLOAD_HOST} mkdir -p #{DOWNLOAD_DIR}"
sh "scp pkg/*.tgz #{DOWNLOAD_SITE}"
sh "scp pkg/*.zip #{DOWNLOAD_SITE}"
end