forked from sass/sass-site
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Rakefile
108 lines (93 loc) · 3.07 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
require "html-proofer"
require "semantic"
require "yaml"
require "yard"
require File.dirname(__FILE__) + '/lib/raw_markdown_link'
task :test => ["sass:dart:version", "sass:libsass:version", :middleman, :test_without_rebuild]
task :test_without_rebuild do
HTMLProofer.check_directory("build",
url_ignore: [
"https://www.drupal.org/dcoc", # This doesn't allow automated requests.
"http://sass.logdown.com/posts/7081811", # This times out occasionally.
"#",
],
assume_extension: true,
# Lots of external URLs fail flakily on Travis, so we just don't check them
# there.
disable_external: ENV["TRAVIS"] == "true"
).run
end
namespace :sass do
# Adds an implementation's version number to data/version.yml.
def add_version(impl, version)
path = 'data/version.yml'
yaml = File.exist?(path) ? YAML.load(File.read(path)) : {}
yaml[impl] = version
File.open(path, 'w') {|f| f.write(YAML.dump(yaml))}
end
# Returns the latest tag in the current Git repository that's a valid semantic
# version and is not a pre-release version *unless* only pre-release versions
# are available.
def latest_stable_tag
tags = `git tag`.strip.split("\n").map do |v|
begin
Semantic::Version.new(v)
rescue ArgumentError
nil
end
end.compact.sort.reverse
(tags.find {|t| !t.pre} || tags.first).to_s
end
namespace :dart do
# Check out the latest commit of Dart Sass into the .dart-sass directory.
task :checkout do
unless Dir.exists?(".dart-sass")
sh %{git clone git://github.com/sass/dart-sass .dart-sass}
end
Dir.chdir(".dart-sass") do
sh %{git fetch}
if ENV["DART_SASS_REVISION"]
sh %{git checkout #{ENV["DART_SASS_REVISION"]}}
else
sh %{git checkout origin/master}
end
end
end
task :version => :checkout do
add_version 'dart', Dir.chdir(".dart-sass") {latest_stable_tag}
end
end
namespace :libsass do
# Check out the latest commit of Dart Sass into the .libsass directory.
task :checkout do
unless Dir.exists?(".libsass")
sh %{git clone git://github.com/sass/libsass .libsass}
end
Dir.chdir(".libsass") do
sh %{git fetch}
if ENV["LIBSASS_REVISION"]
sh %{git checkout #{ENV["LIBSASS_REVISION"]}}
else
sh %{git checkout origin/master}
end
end
end
task :version => :checkout do
add_version 'libsass', Dir.chdir(".libsass") {latest_stable_tag}
end
end
desc "Import information from Sass implementations."
task :import => ["dart:version", "libsass:version"]
end
desc "Build the middleman-controlled portion of the site."
task :middleman do
sh %{bundle exec middleman build --verbose}
end
desc "Build the site."
task "build" => ["sass:import", :middleman]
# Build the site on Heroku, then clean up unnecessary intermediate files.
task "assets:precompile" => :build do
# Clean up unneccessary files to reduce slug size.
sh %{rm -rf .dart-sass .libsass}
sh %{bundle install --without=development}
end