sass 3.4.25 → 3.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CODE_OF_CONDUCT.md +1 -1
- data/CONTRIBUTING.md +3 -3
- data/README.md +17 -9
- data/VERSION +1 -1
- data/VERSION_DATE +1 -1
- data/VERSION_NAME +1 -1
- data/extra/sass-spec-ref.sh +9 -1
- data/lib/sass.rb +0 -7
- data/lib/sass/cache_stores/filesystem.rb +1 -1
- data/lib/sass/css.rb +1 -2
- data/lib/sass/engine.rb +39 -29
- data/lib/sass/environment.rb +26 -5
- data/lib/sass/error.rb +2 -2
- data/lib/sass/exec/base.rb +2 -13
- data/lib/sass/exec/sass_scss.rb +1 -5
- data/lib/sass/features.rb +1 -0
- data/lib/sass/importers/filesystem.rb +6 -4
- data/lib/sass/logger/base.rb +11 -0
- data/lib/sass/plugin/compiler.rb +20 -50
- data/lib/sass/plugin/configuration.rb +2 -2
- data/lib/sass/railtie.rb +1 -1
- data/lib/sass/script/css_parser.rb +4 -1
- data/lib/sass/script/functions.rb +308 -81
- data/lib/sass/script/lexer.rb +63 -9
- data/lib/sass/script/parser.rb +287 -118
- data/lib/sass/script/tree/funcall.rb +35 -34
- data/lib/sass/script/tree/interpolation.rb +0 -3
- data/lib/sass/script/tree/list_literal.rb +23 -8
- data/lib/sass/script/tree/map_literal.rb +2 -2
- data/lib/sass/script/tree/node.rb +0 -8
- data/lib/sass/script/tree/operation.rb +1 -8
- data/lib/sass/script/value.rb +2 -0
- data/lib/sass/script/value/arg_list.rb +1 -1
- data/lib/sass/script/value/base.rb +17 -0
- data/lib/sass/script/value/callable.rb +25 -0
- data/lib/sass/script/value/color.rb +8 -2
- data/lib/sass/script/value/function.rb +19 -0
- data/lib/sass/script/value/helpers.rb +37 -11
- data/lib/sass/script/value/list.rb +35 -14
- data/lib/sass/script/value/map.rb +2 -2
- data/lib/sass/script/value/number.rb +3 -2
- data/lib/sass/scss/css_parser.rb +6 -1
- data/lib/sass/scss/parser.rb +145 -56
- data/lib/sass/scss/rx.rb +5 -11
- data/lib/sass/scss/static_parser.rb +20 -42
- data/lib/sass/selector.rb +4 -0
- data/lib/sass/selector/abstract_sequence.rb +7 -6
- data/lib/sass/selector/comma_sequence.rb +9 -5
- data/lib/sass/selector/pseudo.rb +20 -3
- data/lib/sass/selector/sequence.rb +35 -10
- data/lib/sass/selector/simple.rb +9 -2
- data/lib/sass/selector/simple_sequence.rb +8 -4
- data/lib/sass/source/map.rb +2 -6
- data/lib/sass/stack.rb +21 -1
- data/lib/sass/tree/charset_node.rb +1 -1
- data/lib/sass/tree/prop_node.rb +45 -53
- data/lib/sass/tree/rule_node.rb +6 -8
- data/lib/sass/tree/visitors/check_nesting.rb +1 -1
- data/lib/sass/tree/visitors/convert.rb +2 -3
- data/lib/sass/tree/visitors/cssize.rb +4 -15
- data/lib/sass/tree/visitors/deep_copy.rb +1 -1
- data/lib/sass/tree/visitors/extend.rb +2 -8
- data/lib/sass/tree/visitors/perform.rb +23 -15
- data/lib/sass/tree/visitors/set_options.rb +1 -1
- data/lib/sass/tree/visitors/to_css.rb +49 -22
- data/lib/sass/util.rb +72 -310
- data/lib/sass/util/multibyte_string_scanner.rb +127 -131
- data/lib/sass/util/normalized_map.rb +1 -8
- data/lib/sass/version.rb +0 -4
- metadata +55 -202
- data/Rakefile +0 -453
- data/lib/sass/script/css_variable_warning.rb +0 -52
- data/lib/sass/util/cross_platform_random.rb +0 -19
- data/lib/sass/util/ordered_hash.rb +0 -192
- data/test/sass-spec.yml +0 -3
- data/test/sass/cache_test.rb +0 -131
- data/test/sass/callbacks_test.rb +0 -61
- data/test/sass/compiler_test.rb +0 -236
- data/test/sass/conversion_test.rb +0 -2188
- data/test/sass/css2sass_test.rb +0 -526
- data/test/sass/css_variable_test.rb +0 -132
- data/test/sass/data/hsl-rgb.txt +0 -319
- data/test/sass/encoding_test.rb +0 -219
- data/test/sass/engine_test.rb +0 -3447
- data/test/sass/exec_test.rb +0 -96
- data/test/sass/extend_test.rb +0 -1733
- data/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
- data/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
- data/test/sass/functions_test.rb +0 -1977
- data/test/sass/importer_test.rb +0 -421
- data/test/sass/logger_test.rb +0 -58
- data/test/sass/mock_importer.rb +0 -49
- data/test/sass/more_results/more1.css +0 -9
- data/test/sass/more_results/more1_with_line_comments.css +0 -26
- data/test/sass/more_results/more_import.css +0 -29
- data/test/sass/more_templates/_more_partial.sass +0 -2
- data/test/sass/more_templates/more1.sass +0 -23
- data/test/sass/more_templates/more_import.sass +0 -11
- data/test/sass/plugin_test.rb +0 -556
- data/test/sass/results/alt.css +0 -4
- data/test/sass/results/basic.css +0 -9
- data/test/sass/results/cached_import_option.css +0 -3
- data/test/sass/results/compact.css +0 -5
- data/test/sass/results/complex.css +0 -86
- data/test/sass/results/compressed.css +0 -1
- data/test/sass/results/expanded.css +0 -19
- data/test/sass/results/filename_fn.css +0 -3
- data/test/sass/results/if.css +0 -3
- data/test/sass/results/import.css +0 -31
- data/test/sass/results/import_charset.css +0 -5
- data/test/sass/results/import_charset_1_8.css +0 -5
- data/test/sass/results/import_charset_ibm866.css +0 -5
- data/test/sass/results/import_content.css +0 -1
- data/test/sass/results/line_numbers.css +0 -49
- data/test/sass/results/mixins.css +0 -95
- data/test/sass/results/multiline.css +0 -24
- data/test/sass/results/nested.css +0 -22
- data/test/sass/results/options.css +0 -1
- data/test/sass/results/parent_ref.css +0 -13
- data/test/sass/results/script.css +0 -16
- data/test/sass/results/scss_import.css +0 -31
- data/test/sass/results/scss_importee.css +0 -2
- data/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
- data/test/sass/results/subdir/subdir.css +0 -3
- data/test/sass/results/units.css +0 -11
- data/test/sass/results/warn.css +0 -0
- data/test/sass/results/warn_imported.css +0 -0
- data/test/sass/script_conversion_test.rb +0 -357
- data/test/sass/script_test.rb +0 -1431
- data/test/sass/scss/css_test.rb +0 -1281
- data/test/sass/scss/rx_test.rb +0 -160
- data/test/sass/scss/scss_test.rb +0 -4205
- data/test/sass/scss/test_helper.rb +0 -37
- data/test/sass/source_map_test.rb +0 -1055
- data/test/sass/superselector_test.rb +0 -210
- data/test/sass/templates/_cached_import_option_partial.scss +0 -1
- data/test/sass/templates/_double_import_loop2.sass +0 -1
- data/test/sass/templates/_filename_fn_import.scss +0 -11
- data/test/sass/templates/_imported_charset_ibm866.sass +0 -4
- data/test/sass/templates/_imported_charset_utf8.sass +0 -4
- data/test/sass/templates/_imported_content.sass +0 -3
- data/test/sass/templates/_partial.sass +0 -2
- data/test/sass/templates/_same_name_different_partiality.scss +0 -1
- data/test/sass/templates/alt.sass +0 -16
- data/test/sass/templates/basic.sass +0 -23
- data/test/sass/templates/bork1.sass +0 -2
- data/test/sass/templates/bork2.sass +0 -2
- data/test/sass/templates/bork3.sass +0 -2
- data/test/sass/templates/bork4.sass +0 -2
- data/test/sass/templates/bork5.sass +0 -3
- data/test/sass/templates/cached_import_option.scss +0 -3
- data/test/sass/templates/compact.sass +0 -17
- data/test/sass/templates/complex.sass +0 -305
- data/test/sass/templates/compressed.sass +0 -15
- data/test/sass/templates/double_import_loop1.sass +0 -1
- data/test/sass/templates/expanded.sass +0 -17
- data/test/sass/templates/filename_fn.scss +0 -18
- data/test/sass/templates/if.sass +0 -11
- data/test/sass/templates/import.sass +0 -12
- data/test/sass/templates/import_charset.sass +0 -9
- data/test/sass/templates/import_charset_1_8.sass +0 -6
- data/test/sass/templates/import_charset_ibm866.sass +0 -11
- data/test/sass/templates/import_content.sass +0 -4
- data/test/sass/templates/importee.less +0 -2
- data/test/sass/templates/importee.sass +0 -19
- data/test/sass/templates/line_numbers.sass +0 -13
- data/test/sass/templates/mixin_bork.sass +0 -5
- data/test/sass/templates/mixins.sass +0 -76
- data/test/sass/templates/multiline.sass +0 -20
- data/test/sass/templates/nested.sass +0 -25
- data/test/sass/templates/nested_bork1.sass +0 -2
- data/test/sass/templates/nested_bork2.sass +0 -2
- data/test/sass/templates/nested_bork3.sass +0 -2
- data/test/sass/templates/nested_bork4.sass +0 -2
- data/test/sass/templates/nested_import.sass +0 -2
- data/test/sass/templates/nested_mixin_bork.sass +0 -6
- data/test/sass/templates/options.sass +0 -2
- data/test/sass/templates/parent_ref.sass +0 -25
- data/test/sass/templates/same_name_different_ext.sass +0 -2
- data/test/sass/templates/same_name_different_ext.scss +0 -1
- data/test/sass/templates/same_name_different_partiality.scss +0 -1
- data/test/sass/templates/script.sass +0 -101
- data/test/sass/templates/scss_import.scss +0 -12
- data/test/sass/templates/scss_importee.scss +0 -1
- data/test/sass/templates/single_import_loop.sass +0 -1
- data/test/sass/templates/subdir/import_up1.scss +0 -1
- data/test/sass/templates/subdir/import_up2.scss +0 -1
- data/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
- data/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
- data/test/sass/templates/subdir/subdir.sass +0 -6
- data/test/sass/templates/units.sass +0 -11
- data/test/sass/templates/warn.sass +0 -3
- data/test/sass/templates/warn_imported.sass +0 -4
- data/test/sass/test_helper.rb +0 -8
- data/test/sass/util/multibyte_string_scanner_test.rb +0 -155
- data/test/sass/util/normalized_map_test.rb +0 -51
- data/test/sass/util/subset_map_test.rb +0 -91
- data/test/sass/util_test.rb +0 -438
- data/test/sass/value_helpers_test.rb +0 -179
- data/test/test_helper.rb +0 -110
- data/vendor/listen/CHANGELOG.md +0 -1
- data/vendor/listen/CONTRIBUTING.md +0 -38
- data/vendor/listen/Gemfile +0 -20
- data/vendor/listen/Guardfile +0 -8
- data/vendor/listen/LICENSE +0 -20
- data/vendor/listen/README.md +0 -349
- data/vendor/listen/Rakefile +0 -5
- data/vendor/listen/Vagrantfile +0 -96
- data/vendor/listen/lib/listen.rb +0 -54
- data/vendor/listen/lib/listen/adapter.rb +0 -327
- data/vendor/listen/lib/listen/adapters/bsd.rb +0 -75
- data/vendor/listen/lib/listen/adapters/darwin.rb +0 -48
- data/vendor/listen/lib/listen/adapters/linux.rb +0 -81
- data/vendor/listen/lib/listen/adapters/polling.rb +0 -58
- data/vendor/listen/lib/listen/adapters/windows.rb +0 -91
- data/vendor/listen/lib/listen/directory_record.rb +0 -406
- data/vendor/listen/lib/listen/listener.rb +0 -323
- data/vendor/listen/lib/listen/turnstile.rb +0 -32
- data/vendor/listen/lib/listen/version.rb +0 -3
- data/vendor/listen/listen.gemspec +0 -28
- data/vendor/listen/spec/listen/adapter_spec.rb +0 -149
- data/vendor/listen/spec/listen/adapters/bsd_spec.rb +0 -36
- data/vendor/listen/spec/listen/adapters/darwin_spec.rb +0 -37
- data/vendor/listen/spec/listen/adapters/linux_spec.rb +0 -47
- data/vendor/listen/spec/listen/adapters/polling_spec.rb +0 -68
- data/vendor/listen/spec/listen/adapters/windows_spec.rb +0 -30
- data/vendor/listen/spec/listen/directory_record_spec.rb +0 -1250
- data/vendor/listen/spec/listen/listener_spec.rb +0 -258
- data/vendor/listen/spec/listen/turnstile_spec.rb +0 -56
- data/vendor/listen/spec/listen_spec.rb +0 -67
- data/vendor/listen/spec/spec_helper.rb +0 -25
- data/vendor/listen/spec/support/adapter_helper.rb +0 -666
- data/vendor/listen/spec/support/directory_record_helper.rb +0 -57
- data/vendor/listen/spec/support/fixtures_helper.rb +0 -29
- data/vendor/listen/spec/support/listeners_helper.rb +0 -179
- data/vendor/listen/spec/support/platform_helper.rb +0 -15
data/Rakefile
DELETED
|
@@ -1,453 +0,0 @@
|
|
|
1
|
-
require 'rubygems/package'
|
|
2
|
-
|
|
3
|
-
# ----- Utility Functions -----
|
|
4
|
-
|
|
5
|
-
def scope(path)
|
|
6
|
-
File.join(File.dirname(__FILE__), path)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
# ----- Default: Testing ------
|
|
10
|
-
|
|
11
|
-
task :default => :test
|
|
12
|
-
|
|
13
|
-
require 'rake/testtask'
|
|
14
|
-
|
|
15
|
-
LINE_SIZE = 80
|
|
16
|
-
DECORATION_CHAR = '#'
|
|
17
|
-
|
|
18
|
-
def print_header(string)
|
|
19
|
-
length = string.length
|
|
20
|
-
puts DECORATION_CHAR * LINE_SIZE
|
|
21
|
-
puts string.center(length + 2, ' ').center(LINE_SIZE, DECORATION_CHAR)
|
|
22
|
-
puts DECORATION_CHAR * LINE_SIZE
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
desc "Run all tests"
|
|
26
|
-
task :test do
|
|
27
|
-
test_cases = [
|
|
28
|
-
{
|
|
29
|
-
'env' => {'MATHN' => 'true'},
|
|
30
|
-
'tasks' => ['test:ruby', 'test:spec', :rubocop]
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
'env' => {'MATHN' => 'false'},
|
|
34
|
-
'tasks' => ['test:ruby']
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
|
|
38
|
-
test_cases.each do |test_case|
|
|
39
|
-
env = test_case['env']
|
|
40
|
-
tasks = test_case['tasks']
|
|
41
|
-
|
|
42
|
-
env.each do |key, value|
|
|
43
|
-
ENV[key] = value
|
|
44
|
-
end
|
|
45
|
-
tasks.each do |task|
|
|
46
|
-
print_header("Running task: #{task}, env: #{env}")
|
|
47
|
-
Rake::Task[task].execute
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
namespace :test do
|
|
53
|
-
desc "Run the ruby tests (without sass-spec)"
|
|
54
|
-
Rake::TestTask.new("ruby") do |t|
|
|
55
|
-
t.libs << 'test'
|
|
56
|
-
test_files = FileList[scope('test/**/*_test.rb')]
|
|
57
|
-
test_files.exclude(scope('test/rails/*'))
|
|
58
|
-
test_files.exclude(scope('test/plugins/*'))
|
|
59
|
-
t.test_files = test_files
|
|
60
|
-
t.warning = true
|
|
61
|
-
t.verbose = true
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
desc "Run sass-spec tests against the local code."
|
|
65
|
-
task :spec do
|
|
66
|
-
require "yaml"
|
|
67
|
-
sass_spec_options = YAML.load_file(scope("test/sass-spec.yml"))
|
|
68
|
-
enabled = sass_spec_options.delete(:enabled)
|
|
69
|
-
unless enabled
|
|
70
|
-
puts "SassSpec tests are disabled."
|
|
71
|
-
next
|
|
72
|
-
end
|
|
73
|
-
if ruby_version_at_least?("1.9.2")
|
|
74
|
-
old_load_path = $:.dup
|
|
75
|
-
begin
|
|
76
|
-
$:.unshift(File.join(File.dirname(__FILE__), "lib"))
|
|
77
|
-
begin
|
|
78
|
-
require 'sass_spec'
|
|
79
|
-
rescue LoadError
|
|
80
|
-
puts "You probably forgot to run: bundle exec rake"
|
|
81
|
-
raise
|
|
82
|
-
end
|
|
83
|
-
default_options = {
|
|
84
|
-
:spec_directory => SassSpec::SPEC_DIR,
|
|
85
|
-
:engine_adapter => SassEngineAdapter.new,
|
|
86
|
-
:generate => false,
|
|
87
|
-
:tap => false,
|
|
88
|
-
:skip => false,
|
|
89
|
-
:verbose => false,
|
|
90
|
-
:filter => "",
|
|
91
|
-
:limit => -1,
|
|
92
|
-
:unexpected_pass => false,
|
|
93
|
-
:nuke => false,
|
|
94
|
-
}
|
|
95
|
-
SassSpec::Runner.new(default_options.merge(sass_spec_options)).run || exit(1)
|
|
96
|
-
ensure
|
|
97
|
-
$:.replace(old_load_path)
|
|
98
|
-
end
|
|
99
|
-
else
|
|
100
|
-
"Skipping sass-spec on ruby versions less than 1.9.2"
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
# ----- Code Style Enforcement -----
|
|
106
|
-
|
|
107
|
-
def ruby_version_at_least?(version_string)
|
|
108
|
-
ruby_version = Gem::Version.new(RUBY_VERSION.dup)
|
|
109
|
-
version = Gem::Version.new(version_string)
|
|
110
|
-
ruby_version >= version
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
begin
|
|
114
|
-
require 'rubocop/rake_task'
|
|
115
|
-
RuboCop = Rubocop unless defined?(RuboCop)
|
|
116
|
-
RuboCop::RakeTask.new do |t|
|
|
117
|
-
t.patterns = FileList["lib/**/*"]
|
|
118
|
-
end
|
|
119
|
-
rescue LoadError
|
|
120
|
-
task :rubocop do
|
|
121
|
-
puts "Rubocop is disabled."
|
|
122
|
-
puts "Passing this check is required in order for your patch to be accepted."
|
|
123
|
-
puts "Install Rubocop and then run the style check with: rake rubocop."
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
# ----- Packaging -----
|
|
128
|
-
|
|
129
|
-
# Don't use Rake::GemPackageTast because we want prerequisites to run
|
|
130
|
-
# before we load the gemspec.
|
|
131
|
-
desc "Build all the packages."
|
|
132
|
-
task :package => [:revision_file, :date_file, :submodules, :permissions] do
|
|
133
|
-
version = get_version
|
|
134
|
-
File.open(scope('VERSION'), 'w') {|f| f.puts(version)}
|
|
135
|
-
load scope('sass.gemspec')
|
|
136
|
-
Gem::Package.build(SASS_GEMSPEC)
|
|
137
|
-
sh %{git checkout VERSION}
|
|
138
|
-
|
|
139
|
-
pkg = "#{SASS_GEMSPEC.name}-#{SASS_GEMSPEC.version}"
|
|
140
|
-
mkdir_p "pkg"
|
|
141
|
-
verbose(true) {mv "#{pkg}.gem", "pkg/#{pkg}.gem"}
|
|
142
|
-
|
|
143
|
-
sh %{rm -f pkg/#{pkg}.tar.gz}
|
|
144
|
-
verbose(false) {SASS_GEMSPEC.files.each {|f| sh %{tar rf pkg/#{pkg}.tar #{f}}}}
|
|
145
|
-
sh %{gzip pkg/#{pkg}.tar}
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
task :permissions do
|
|
149
|
-
sh %{chmod -R a+rx bin}
|
|
150
|
-
sh %{chmod -R a+r .}
|
|
151
|
-
require 'shellwords'
|
|
152
|
-
Dir.glob('test/**/*_test.rb') do |file|
|
|
153
|
-
next if file =~ %r{^test/haml/spec/}
|
|
154
|
-
sh %{chmod a+rx #{file}}
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
task :revision_file do
|
|
159
|
-
require scope('lib/sass')
|
|
160
|
-
|
|
161
|
-
release = Rake.application.top_level_tasks.include?('release') || File.exist?(scope('EDGE_GEM_VERSION'))
|
|
162
|
-
if Sass.version[:rev] && !release
|
|
163
|
-
File.open(scope('REVISION'), 'w') { |f| f.puts Sass.version[:rev] }
|
|
164
|
-
elsif release
|
|
165
|
-
File.open(scope('REVISION'), 'w') { |f| f.puts "(release)" }
|
|
166
|
-
else
|
|
167
|
-
File.open(scope('REVISION'), 'w') { |f| f.puts "(unknown)" }
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
task :date_file do
|
|
172
|
-
File.open(scope('VERSION_DATE'), 'w') do |f|
|
|
173
|
-
f.puts Time.now.utc.strftime('%d %B %Y %T %Z')
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
# We also need to get rid of this file after packaging.
|
|
178
|
-
at_exit do
|
|
179
|
-
File.delete(scope('REVISION')) rescue nil
|
|
180
|
-
File.delete(scope('VERSION_DATE')) rescue nil
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
desc "Install Sass as a gem. Use SUDO=1 to install with sudo."
|
|
184
|
-
task :install => [:package] do
|
|
185
|
-
gem = RUBY_PLATFORM =~ /java/ ? 'jgem' : 'gem'
|
|
186
|
-
sh %{#{'sudo ' if ENV["SUDO"]}#{gem} install --no-ri pkg/sass-#{get_version}}
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
desc "Release a new Sass package to RubyGems.org."
|
|
190
|
-
task :release => [:check_release, :package] do
|
|
191
|
-
version = File.read(scope("VERSION")).strip
|
|
192
|
-
sh %{gem push pkg/sass-#{version}.gem}
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
# Ensures that the VERSION file has been updated for a new release.
|
|
196
|
-
task :check_release do
|
|
197
|
-
version = File.read(scope("VERSION")).strip
|
|
198
|
-
raise "There have been changes since current version (#{version})" if changed_since?(version)
|
|
199
|
-
raise "VERSION_NAME must not be 'Bleeding Edge'" if File.read(scope("VERSION_NAME")) == "Bleeding Edge"
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
# Reads a password from the command line.
|
|
203
|
-
#
|
|
204
|
-
# @param name [String] The prompt to use to read the password
|
|
205
|
-
def read_password(prompt)
|
|
206
|
-
require 'readline'
|
|
207
|
-
system "stty -echo"
|
|
208
|
-
Readline.readline("#{prompt}: ").strip
|
|
209
|
-
ensure
|
|
210
|
-
system "stty echo"
|
|
211
|
-
puts
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
# Returns whether or not the repository, or specific files,
|
|
215
|
-
# has/have changed since a given revision.
|
|
216
|
-
#
|
|
217
|
-
# @param rev [String] The revision to check against
|
|
218
|
-
# @param files [Array<String>] The files to check.
|
|
219
|
-
# If this is empty, checks the entire repository
|
|
220
|
-
def changed_since?(rev, *files)
|
|
221
|
-
IO.popen("git diff --exit-code #{rev} #{files.join(' ')}") {}
|
|
222
|
-
return !$?.success?
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
task :submodules do
|
|
226
|
-
if File.exist?(File.dirname(__FILE__) + "/.git")
|
|
227
|
-
sh %{git submodule sync}
|
|
228
|
-
sh %{git submodule update --init}
|
|
229
|
-
elsif !File.exist?(File.dirname(__FILE__) + "/vendor/listen/lib")
|
|
230
|
-
warn <<WARN
|
|
231
|
-
WARNING: vendor/listen doesn't exist, and this isn't a git repository so
|
|
232
|
-
I can't get it automatically!
|
|
233
|
-
WARN
|
|
234
|
-
end
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
task :release_edge do
|
|
238
|
-
ensure_git_cleanup do
|
|
239
|
-
puts "#{'=' * 50} Running rake release_edge"
|
|
240
|
-
|
|
241
|
-
sh %{git checkout master}
|
|
242
|
-
sh %{git reset --hard origin/master}
|
|
243
|
-
sh %{rake package}
|
|
244
|
-
version = get_version
|
|
245
|
-
if version.include?('.rc.')
|
|
246
|
-
puts "#{'=' * 20} Not releasing edge gem for RC version"
|
|
247
|
-
next
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
sh %{gem push pkg/sass-#{version}.gem}
|
|
251
|
-
end
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
# Get the version string. If this is being installed from Git,
|
|
255
|
-
# this includes the proper prerelease version.
|
|
256
|
-
def get_version
|
|
257
|
-
written_version = File.read(scope('VERSION').strip)
|
|
258
|
-
return written_version unless File.exist?(scope('.git'))
|
|
259
|
-
|
|
260
|
-
# Get the current master branch version
|
|
261
|
-
version = written_version.split('.')
|
|
262
|
-
version.map! {|n| n =~ /^[0-9]+$/ ? n.to_i : n}
|
|
263
|
-
return written_version unless version.size == 5 && version[3] == "alpha" # prerelease
|
|
264
|
-
|
|
265
|
-
return written_version if (commit_count = `git log --pretty=oneline HEAD ^stable | wc -l`).empty?
|
|
266
|
-
version[4] = commit_count.strip
|
|
267
|
-
version.join('.')
|
|
268
|
-
end
|
|
269
|
-
|
|
270
|
-
task :watch_for_update do
|
|
271
|
-
sh %{ruby extra/update_watch.rb}
|
|
272
|
-
end
|
|
273
|
-
|
|
274
|
-
# ----- Documentation -----
|
|
275
|
-
|
|
276
|
-
task :rdoc do
|
|
277
|
-
puts '=' * 100, <<END, '=' * 100
|
|
278
|
-
Sass uses the YARD documentation system (http://github.com/lsegal/yard).
|
|
279
|
-
Install the yard gem and then run "rake doc".
|
|
280
|
-
END
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
begin
|
|
284
|
-
require 'yard'
|
|
285
|
-
|
|
286
|
-
namespace :doc do
|
|
287
|
-
task :sass do
|
|
288
|
-
require scope('lib/sass')
|
|
289
|
-
Dir[scope("yard/default/**/*.sass")].each do |sass|
|
|
290
|
-
File.open(sass.gsub(/sass$/, 'css'), 'w') do |f|
|
|
291
|
-
f.write(Sass::Engine.new(File.read(sass)).render)
|
|
292
|
-
end
|
|
293
|
-
end
|
|
294
|
-
end
|
|
295
|
-
|
|
296
|
-
desc "List all undocumented methods and classes."
|
|
297
|
-
task :undocumented do
|
|
298
|
-
opts = ENV["YARD_OPTS"] || ""
|
|
299
|
-
ENV["YARD_OPTS"] = opts.dup + <<OPTS
|
|
300
|
-
--list --tag comment --hide-tag comment --query "
|
|
301
|
-
object.docstring.blank? &&
|
|
302
|
-
!(object.type == :method && object.is_alias?)"
|
|
303
|
-
OPTS
|
|
304
|
-
Rake::Task['yard'].execute
|
|
305
|
-
end
|
|
306
|
-
end
|
|
307
|
-
|
|
308
|
-
YARD::Rake::YardocTask.new do |t|
|
|
309
|
-
t.files = FileList.new(scope('lib/**/*.rb')) do |list|
|
|
310
|
-
list.exclude('lib/sass/plugin/merb.rb')
|
|
311
|
-
list.exclude('lib/sass/plugin/rails.rb')
|
|
312
|
-
end.to_a
|
|
313
|
-
t.options << '--incremental' if Rake.application.top_level_tasks.include?('redoc')
|
|
314
|
-
t.options += FileList.new(scope('yard/*.rb')).to_a.map {|f| ['-e', f]}.flatten
|
|
315
|
-
files = FileList.new(scope('doc-src/*')).to_a.sort_by {|s| s.size} + %w[MIT-LICENSE VERSION]
|
|
316
|
-
t.options << '--files' << files.join(',')
|
|
317
|
-
t.options << '--template-path' << scope('yard')
|
|
318
|
-
t.options << '--title' << ENV["YARD_TITLE"] if ENV["YARD_TITLE"]
|
|
319
|
-
|
|
320
|
-
t.before = lambda do
|
|
321
|
-
if ENV["YARD_OPTS"]
|
|
322
|
-
require 'shellwords'
|
|
323
|
-
t.options.concat(Shellwords.shellwords(ENV["YARD_OPTS"]))
|
|
324
|
-
end
|
|
325
|
-
end
|
|
326
|
-
end
|
|
327
|
-
Rake::Task['yard'].prerequisites.insert(0, 'doc:sass')
|
|
328
|
-
Rake::Task['yard'].instance_variable_set('@comment', nil)
|
|
329
|
-
|
|
330
|
-
desc "Generate Documentation"
|
|
331
|
-
task :doc => :yard
|
|
332
|
-
task :redoc => :yard
|
|
333
|
-
rescue LoadError
|
|
334
|
-
desc "Generate Documentation"
|
|
335
|
-
task :doc => :rdoc
|
|
336
|
-
task :yard => :rdoc
|
|
337
|
-
end
|
|
338
|
-
|
|
339
|
-
task :pages do
|
|
340
|
-
ensure_git_cleanup do
|
|
341
|
-
puts "#{'=' * 50} Running rake pages"
|
|
342
|
-
sh %{git checkout sass-pages}
|
|
343
|
-
sh %{git reset --hard origin/sass-pages}
|
|
344
|
-
|
|
345
|
-
Dir.chdir("/var/www/sass-pages") do
|
|
346
|
-
sh %{git fetch origin}
|
|
347
|
-
|
|
348
|
-
sh %{git checkout stable}
|
|
349
|
-
sh %{git reset --hard origin/stable}
|
|
350
|
-
|
|
351
|
-
sh %{git checkout sass-pages}
|
|
352
|
-
sh %{git reset --hard origin/sass-pages}
|
|
353
|
-
sh %{rake build --trace}
|
|
354
|
-
sh %{mkdir -p tmp}
|
|
355
|
-
sh %{touch tmp/restart.txt}
|
|
356
|
-
end
|
|
357
|
-
end
|
|
358
|
-
end
|
|
359
|
-
|
|
360
|
-
# ----- Coverage -----
|
|
361
|
-
|
|
362
|
-
begin
|
|
363
|
-
require 'rcov/rcovtask'
|
|
364
|
-
|
|
365
|
-
Rcov::RcovTask.new do |t|
|
|
366
|
-
t.test_files = FileList[scope('test/**/*_test.rb')]
|
|
367
|
-
t.rcov_opts << '-x' << '"^\/"'
|
|
368
|
-
if ENV['NON_NATIVE']
|
|
369
|
-
t.rcov_opts << "--no-rcovrt"
|
|
370
|
-
end
|
|
371
|
-
t.verbose = true
|
|
372
|
-
end
|
|
373
|
-
rescue LoadError; end
|
|
374
|
-
|
|
375
|
-
# ----- Profiling -----
|
|
376
|
-
|
|
377
|
-
begin
|
|
378
|
-
require 'ruby-prof'
|
|
379
|
-
|
|
380
|
-
desc <<END
|
|
381
|
-
Run a profile of sass.
|
|
382
|
-
TIMES=n sets the number of runs. Defaults to 1000.
|
|
383
|
-
FILE=str sets the file to profile. Defaults to 'complex'.
|
|
384
|
-
OUTPUT=str sets the ruby-prof output format.
|
|
385
|
-
Can be Flat, CallInfo, or Graph. Defaults to Flat. Defaults to Flat.
|
|
386
|
-
END
|
|
387
|
-
task :profile do
|
|
388
|
-
times = (ENV['TIMES'] || '1000').to_i
|
|
389
|
-
file = ENV['FILE']
|
|
390
|
-
|
|
391
|
-
require 'lib/sass'
|
|
392
|
-
|
|
393
|
-
file = File.read(scope("test/sass/templates/#{file || 'complex'}.sass"))
|
|
394
|
-
result = RubyProf.profile { times.times { Sass::Engine.new(file).render } }
|
|
395
|
-
|
|
396
|
-
RubyProf.const_get("#{(ENV['OUTPUT'] || 'Flat').capitalize}Printer").new(result).print
|
|
397
|
-
end
|
|
398
|
-
rescue LoadError; end
|
|
399
|
-
|
|
400
|
-
# ----- Handling Updates -----
|
|
401
|
-
|
|
402
|
-
def email_on_error
|
|
403
|
-
yield
|
|
404
|
-
rescue Exception => e
|
|
405
|
-
IO.popen("sendmail nex342@gmail.com", "w") do |sm|
|
|
406
|
-
sm << "From: nex3@nex-3.com\n" <<
|
|
407
|
-
"To: nex342@gmail.com\n" <<
|
|
408
|
-
"Subject: Exception when running rake #{Rake.application.top_level_tasks.join(', ')}\n" <<
|
|
409
|
-
e.message << "\n\n" <<
|
|
410
|
-
e.backtrace.join("\n")
|
|
411
|
-
end
|
|
412
|
-
ensure
|
|
413
|
-
raise e if e
|
|
414
|
-
end
|
|
415
|
-
|
|
416
|
-
def ensure_git_cleanup
|
|
417
|
-
email_on_error {yield}
|
|
418
|
-
ensure
|
|
419
|
-
sh %{git reset --hard HEAD}
|
|
420
|
-
sh %{git clean -xdf}
|
|
421
|
-
sh %{git checkout master}
|
|
422
|
-
end
|
|
423
|
-
|
|
424
|
-
task :handle_update do
|
|
425
|
-
email_on_error do
|
|
426
|
-
unless ENV["REF"] =~ %r{^refs/heads/(master|stable|sass-pages)$}
|
|
427
|
-
puts "#{'=' * 20} Ignoring rake handle_update REF=#{ENV["REF"].inspect}"
|
|
428
|
-
next
|
|
429
|
-
end
|
|
430
|
-
branch = $1
|
|
431
|
-
|
|
432
|
-
puts
|
|
433
|
-
puts
|
|
434
|
-
puts '=' * 150
|
|
435
|
-
puts "Running rake handle_update REF=#{ENV["REF"].inspect}"
|
|
436
|
-
|
|
437
|
-
sh %{git fetch origin}
|
|
438
|
-
sh %{git checkout stable}
|
|
439
|
-
sh %{git reset --hard origin/stable}
|
|
440
|
-
sh %{git checkout master}
|
|
441
|
-
sh %{git reset --hard origin/master}
|
|
442
|
-
|
|
443
|
-
case branch
|
|
444
|
-
when "master"
|
|
445
|
-
sh %{rake release_edge --trace}
|
|
446
|
-
when "stable", "sass-pages"
|
|
447
|
-
sh %{rake pages --trace}
|
|
448
|
-
end
|
|
449
|
-
|
|
450
|
-
puts 'Done running handle_update'
|
|
451
|
-
puts '=' * 150
|
|
452
|
-
end
|
|
453
|
-
end
|