|  | 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
 |