require 'rake' require 'rake/clean' require 'pathname' build_dir = Pathname('_build') module_dest_dir = Pathname('../res') image_dest_dir = Pathname('../images') directory module_dest_dir directory image_dest_dir control_build_dir = build_dir / 'controls' control_build_files = "#{control_build_dir}/**/*.svg" control_build_file_to_dest_file = "%{^#{control_build_dir}/,#{module_dest_dir}/}p" image_build_dir = build_dir / 'images' image_build_files = "#{image_build_dir}/**/*.svg" image_build_file_to_dest_file = "%{^#{image_build_dir}/,#{image_dest_dir}/}p" panel_build_dir = build_dir / 'panels' panel_build_files = "#{panel_build_dir}/**/*.svg" panel_build_file_to_dest_file = "%{^#{panel_build_dir}/,#{module_dest_dir}/}X/panel.svg" module_source_dir = 'panels' module_source_files = FileList["#{module_source_dir}/**/*.svg"] module_source_file_to_dest_dir = "%{^#{module_source_dir}/,#{module_dest_dir}/}X" module_dest_dirs = module_source_files.pathmap(module_source_file_to_dest_dir) module_dest_dirs.each { |dir| directory dir } desc 'Compile the SVG images' task :compile do sh 'bundle exec jekyll b --trace' end task controls: [:compile] + module_dest_dirs do FileList[control_build_files].each do |build_file| dest_file = build_file.pathmap(control_build_file_to_dest_file) sh "xmllint --format #{build_file} > #{dest_file}" end end task panels: [:compile] + module_dest_dirs do FileList[panel_build_files].each do |build_file| dest_file = build_file.pathmap(panel_build_file_to_dest_file) convert_text_to_paths(build_file, dest_file) end end task images: [:compile, image_dest_dir] do FileList[image_build_files].each do |build_file| dest_file = build_file.pathmap(image_build_file_to_dest_file) convert_text_to_paths(build_file, dest_file) end end task all: [:controls, :panels, :images] task default: :all CLEAN.include build_dir CLOBBER.include module_dest_dir, image_dest_dir def convert_text_to_paths(source, dest) source = Pathname(source).expand_path.to_s dest = Pathname(dest).expand_path.to_s sh "/Applications/Inkscape.app/Contents/Resources/script --export-text-to-path --export-plain-svg=#{dest} #{source}" end