diff options
author | wout <wout@impinc.co.uk> | 2014-07-13 10:32:20 +0200 |
---|---|---|
committer | wout <wout@impinc.co.uk> | 2014-07-13 10:32:20 +0200 |
commit | e9a0d5f5d7074b1cb3d1bd5a00f6a602bd55f983 (patch) | |
tree | 709af264123ce66ebafb8490d84cceb6d5b8b97a /Rakefile | |
parent | 40bf2f8ecda3f426e7f13e1d891ab1ab6e004116 (diff) | |
download | svg.js-e9a0d5f5d7074b1cb3d1bd5a00f6a602bd55f983.tar.gz svg.js-e9a0d5f5d7074b1cb3d1bd5a00f6a602bd55f983.zip |
Switched to gulp for building
Diffstat (limited to 'Rakefile')
-rwxr-xr-x | Rakefile | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/Rakefile b/Rakefile deleted file mode 100755 index f5ce78a..0000000 --- a/Rakefile +++ /dev/null @@ -1,152 +0,0 @@ -SVGJS_VERSION = '1.0.0-rc.10' - -# all available modules in the correct loading order -MODULES = %w[ svg inventor adopter regex utilities default color array pointarray patharray number viewbox element boxes matrix attr transform style parent container transporter fx relative event defs group arrange mask clip gradient pattern doc spof shape symbol use rect ellipse line poly pointed path image text textpath nested hyperlink marker sugar set data memory selector loader helpers polyfill ] - -# how many bytes in a "kilobyte" -KILO = 1024 - -# define default task -task :default => :dist - -# module-aware file task -class BuildTask < Rake::FileTask - - def modules - prerequisites.map { |f| File.basename(f, '.js') } - end - - def remove_prerequisites to_remove - @prerequisites -= to_remove - return self - end - - def needed?() super or modules_mismatch? end - - def modules_mismatch? - previous_modules != modules - end - - def previous_modules - first_line =~ / - ([\w,\s]+) - / && $1.split(/\W+/) - end - - def first_line - File.open(name, 'r') { |f| f.gets } - end - -end - -BuildTask.define_task 'dist/svg.js' => MODULES.map {|m| "src/#{ m }.js" } do |task| - mkdir_p 'dist', :verbose => false - - svgjs = '' - - task.prerequisites.each do |src| - # bring in source files one by one, but without copyright info - copyright = true - File.open(src).each_line do |line| - copyright = false if copyright and line !~ %r{^(/|\s*$)} - svgjs << " #{ line }" unless copyright - end - svgjs << "\n\n" - end - - File.open(task.name, 'w') do |file| - file.puts "/* svg.js %s - %s - svgjs.com/license */" % [version_string, task.modules.join(' ')] - - file.puts ';(function() {' - file.puts "\n" - file.puts svgjs - file.puts '}).call(this);' - end - -end - -file 'dist/svg.min.js' => 'dist/svg.js' do |task| - require 'rubygems' - begin require 'uglifier' - rescue LoadError; fail "Uglifier not available: #{$!}" - else - File.open(task.name, 'w') do |min| - min << Uglifier.new.compile(File.read(task.prerequisites.first)) - end - end -end - -file 'dist/svg.min.gz' => 'dist/svg.min.js' do |task| - verbose false do - tmp_file = task.name.sub('.gz', '') - cp task.prerequisites.first, tmp_file - sh 'gzip', '--best', tmp_file - end -end - -desc "Concatenate source files to build svg.js" -task :concat, [:modules] do |task, args| - modules = args[:modules].to_s.split(':') - toattrsdd, to_exclude = modules.partition {|m| m.sub!(/^(-)?(.+)/, 'src/\2.js'); !$1 } - - Rake::Task['dist/svg.js']. - remove_prerequisites(to_exclude).enhance(toattrsdd). - invoke -end - -desc "Generate svg.js distribution files and report size statistics" -task :dist => ['dist/svg.js', 'dist/svg.min.js', 'dist/svg.min.gz'] do |task| - orig_size, min_size, gz_size = task.prerequisites.map {|f| File.size(f) } - - puts "Original version: %.3fk" % (orig_size.to_f / KILO) - puts "Minified: %.3fk" % (min_size.to_f / KILO) - puts "Minified and gzipped: %.3fk, compression factor %.3f" % [gz_size.to_f / KILO, orig_size.to_f / gz_size] - - rm_f 'dist/svg.min.gz', :verbose => false -end - -desc "List available modules" -task :modules do - Dir['src/**/*.js'].each do |file| - name = file.gsub(/^src\//,'').gsub(/.js$/,'') - puts name + (MODULES.include?(name) ? '*' : '') - end - puts "\n*included in default build" -end - -task(:clean) { rm_rf 'dist' } - -desc "Run tests with PhantomJS" -task :test do - sh 'script/test' - Rake::Task[:check_whitespace].invoke -end - -desc "Strip trailing whitespace and ensure each file ends with a newline" -task :whitespace do - verbose false do - files = Dir['{src,test,examples}/**/*.{js,html}'] - ruby(*%w'-p -i -e $_.sub!(/\s*\Z/,"\n")'.concat(files)) - end -end - -desc "Checks for trailing whitespace in source files and tests" -task :check_whitespace do - flunked = false - flunk = lambda {|file, num| flunked = true; puts "#{file}:#{num}" } - Dir['{src,test,examples}/**/*.{js,html}'].each do |file| - File.open(file, 'r') {|f| f.each_with_index {|ln, num| flunk.call(file, num + 1) if ln.chomp =~ /\s+$/ } } - end - fail if flunked -end - -# svg.js version number + git sha if available -def version_string - desc = `git describe --tags HEAD 2>&1`.chomp - if $?.success? - desc - else - suffix, dir = '', File.basename(Dir.pwd) - # detect git sha from directory name of GitHub zip/tarball - suffix = "-g#{$1}" if dir =~ /^wout-svg.js-([a-f0-9]{7,40})$/ - SVGJS_VERSION + suffix - end -end
\ No newline at end of file |