From 37572b4c61d1f8ddbf95a1d6aa85f3967d617a12 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 24 Nov 2023 14:46:25 +0100 Subject: [PATCH] Update icon downloading code --- lib/tasks/icons.rake | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/tasks/icons.rake b/lib/tasks/icons.rake index 7ab747fa56..92306e9561 100644 --- a/lib/tasks/icons.rake +++ b/lib/tasks/icons.rake @@ -18,29 +18,39 @@ def download_material_icon(icon, weight: 400, filled: false, size: 20) end def find_used_icons - icons = Set.new + icons_by_weight_and_size = {} - Dir[Rails.root.join('app', 'javascript', '**', '*.*sx')].map do |path| + Dir[Rails.root.join('app', 'javascript', '**', '*.*s*')].map do |path| File.open(path, 'r') do |file| - pattern = %r{\Aimport .* from '@material-symbols/svg-600/outlined/(?[^-]*)(?-fill)?.svg';} + pattern = %r{\Aimport .* from 'mastodon/../material-icons/(?[0-9]+)-(?[0-9]+)px/(?[^-]*)(?-fill)?.svg';} file.each_line do |line| match = pattern.match(line) next if match.blank? - icons << match['icon'] + weight = match['weight'].to_i + size = match['size'].to_i + + icons_by_weight_and_size[weight] ||= {} + icons_by_weight_and_size[weight][size] ||= Set.new + + icons_by_weight_and_size[weight][size] << match['icon'] end end end - icons + icons_by_weight_and_size end namespace :icons do desc 'Download used Material Symbols icons' task download: :environment do - find_used_icons.each do |icon| - download_material_icon(icon) - download_material_icon(icon, filled: true) + find_used_icons.each do |weight, icons_by_size| + icons_by_size.each do |size, icons| + icons.each do |icon| + download_material_icon(icon, weight: weight, size: size) + download_material_icon(icon, weight: weight, size: size, filled: true) + end + end end end end