107 lines
2.9 KiB
Ruby
107 lines
2.9 KiB
Ruby
require 'bundler/gem_tasks'
|
|
require 'rspec/core/rake_task'
|
|
require 'yard'
|
|
require 'benchmark'
|
|
# require 'byebug'
|
|
|
|
desc 'install + spec'
|
|
task default: [:install, :spec]
|
|
|
|
# Useful for hooking up with SublimeText.
|
|
# e.g. rake sample[basic.rb]
|
|
desc 'Run a specific sample'
|
|
task :run,[:file] => :install do |t, args|
|
|
args.with_defaults(file: 'basic.rb')
|
|
Dir.chdir('samples') do
|
|
args[:file] << ".rb" unless args[:file].end_with? '.rb'
|
|
puts "Running samples/#{args[:file]}"
|
|
load args[:file]
|
|
end
|
|
end
|
|
|
|
|
|
RSpec::Core::RakeTask.new(:spec)
|
|
|
|
RSpec::Core::RakeTask.new(:spec_fastonly) do |t|
|
|
t.rspec_opts = "--tag ~slow"
|
|
end
|
|
|
|
desc 'Build API docs'
|
|
task doc: [:yarddoc, :apply_google_analytics]
|
|
|
|
YARD::Rake::YardocTask.new(:yarddoc) do |t|
|
|
t.files = ['lib/**/*.rb', 'samples/**/*.rb'] # optional
|
|
#t.options = ['--any', '--extra', '--opts'] # optional
|
|
end
|
|
|
|
desc 'Run some performance benchmarks'
|
|
task benchmark: [:install] do
|
|
require 'squib'
|
|
Squib::logger.level = Logger::ERROR #silence warnings
|
|
Dir.chdir('benchmarks') do
|
|
Benchmark.bm(15) do |bm|
|
|
Dir['*.rb'].each do | script |
|
|
GC.start
|
|
bm.report(script) { load script }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
desc 'Run sanity tests without a full rebuild'
|
|
task :sanity_only do
|
|
require_relative 'spec/samples/sanity.rb'
|
|
Sanity.new.run
|
|
end
|
|
|
|
desc 'Run full rebuild with sanity tests'
|
|
task sanity: [:install, :spec, :sanity_only]
|
|
|
|
desc 'Insert Google Analytics into documentation build'
|
|
task :apply_google_analytics do
|
|
# The string to replace in the html document. This is chosen to be the end
|
|
# body </body> tag. So the script can be injected as the last thing in the
|
|
# document body.
|
|
string_to_replace = "</body>"
|
|
# This is the string to replace with. It include the google analytics script
|
|
# as well as the end </body> tag.
|
|
string_to_replace_with = <<-EOF
|
|
<script>
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
|
|
ga('create', 'UA-54811605-1', 'auto');
|
|
ga('send', 'pageview');
|
|
|
|
</script>
|
|
</body>
|
|
EOF
|
|
|
|
files = Dir.glob("doc/**/*.html")
|
|
|
|
files.each do |html_file|
|
|
puts "Processing file: #{html_file}"
|
|
contents = ""
|
|
# Read the file contents
|
|
file = File.open(html_file)
|
|
file.each { |line| contents << line }
|
|
file.close
|
|
|
|
# If the file already has google analytics tracking info, skip it.
|
|
if contents.include?(string_to_replace_with)
|
|
puts "Skipped..."
|
|
next
|
|
end
|
|
|
|
# Apply google analytics tracking info to the html file
|
|
contents.gsub!(string_to_replace, string_to_replace_with)
|
|
|
|
# Write the contents with the google analytics info to the file
|
|
file = File.open(html_file, "w")
|
|
file.write(contents)
|
|
file.close
|
|
end
|
|
end
|