You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.1KB

  1. require 'rake'
  2. require 'rake/clean'
  3. require 'pathname'
  4. build_dir = Pathname('_build')
  5. module_dest_dir = Pathname('../res')
  6. image_dest_dir = Pathname('../images')
  7. directory module_dest_dir
  8. directory image_dest_dir
  9. control_build_dir = build_dir / 'controls'
  10. control_build_files = "#{control_build_dir}/**/*.svg"
  11. control_build_file_to_dest_file = "%{^#{control_build_dir}/,#{module_dest_dir}/}p"
  12. image_build_dir = build_dir / 'images'
  13. image_build_files = "#{image_build_dir}/**/*.svg"
  14. image_build_file_to_dest_file = "%{^#{image_build_dir}/,#{image_dest_dir}/}p"
  15. panel_build_dir = build_dir / 'panels'
  16. panel_build_files = "#{panel_build_dir}/**/*.svg"
  17. panel_build_file_to_dest_file = "%{^#{panel_build_dir}/,#{module_dest_dir}/}X/panel.svg"
  18. module_source_dir = 'panels'
  19. module_source_files = FileList["#{module_source_dir}/**/*.svg"]
  20. module_source_file_to_dest_dir = "%{^#{module_source_dir}/,#{module_dest_dir}/}X"
  21. module_dest_dirs = module_source_files.pathmap(module_source_file_to_dest_dir)
  22. module_dest_dirs.each { |dir| directory dir }
  23. desc 'Compile the SVG images'
  24. task :compile do
  25. sh 'bundle exec jekyll b --trace'
  26. end
  27. task controls: [:compile] + module_dest_dirs do
  28. FileList[control_build_files].each do |build_file|
  29. dest_file = build_file.pathmap(control_build_file_to_dest_file)
  30. sh "xmllint --format #{build_file} > #{dest_file}"
  31. end
  32. end
  33. task panels: [:compile] + module_dest_dirs do
  34. FileList[panel_build_files].each do |build_file|
  35. dest_file = build_file.pathmap(panel_build_file_to_dest_file)
  36. convert_text_to_paths(build_file, dest_file)
  37. end
  38. end
  39. task images: [:compile, image_dest_dir] do
  40. FileList[image_build_files].each do |build_file|
  41. dest_file = build_file.pathmap(image_build_file_to_dest_file)
  42. convert_text_to_paths(build_file, dest_file)
  43. end
  44. end
  45. task all: [:controls, :panels, :images]
  46. task default: :all
  47. CLEAN.include build_dir
  48. CLOBBER.include module_dest_dir, image_dest_dir
  49. def convert_text_to_paths(source, dest)
  50. source = Pathname(source).expand_path.to_s
  51. dest = Pathname(dest).expand_path.to_s
  52. sh "/Applications/Inkscape.app/Contents/Resources/script --export-text-to-path --export-plain-svg=#{dest} #{source}"
  53. end