Skip to content

Commit baf0057

Browse files
committed
fix: lint
1 parent f79b050 commit baf0057

File tree

1 file changed

+83
-74
lines changed

1 file changed

+83
-74
lines changed

lib/mix/tasks/generate_icon_css.ex

Lines changed: 83 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -64,91 +64,100 @@ defmodule Mix.Tasks.GenerateIconCss do
6464
defp generate_heroicons do
6565
base_dir = "deps/heroicons/optimized"
6666

67-
if !File.exists?(base_dir) do
67+
if File.exists?(base_dir) do
68+
generate_heroicons_from_dir(base_dir)
69+
else
6870
Mix.shell().info("⚠️ Heroicons not found")
6971
%{variables: [], utilities: []}
70-
else
71-
variants = [
72-
{"", "24/outline", "1.5rem"},
73-
{"-solid", "24/solid", "1.5rem"},
74-
{"-mini", "20/solid", "1.25rem"},
75-
{"-micro", "16/solid", "1rem"}
76-
]
77-
78-
Mix.shell().info("🎨 Processing Heroicons...")
79-
80-
{variables, utilities} =
81-
Enum.flat_map(variants, fn {suffix, dir, size} ->
82-
full_dir = Path.join(base_dir, dir)
83-
84-
if File.exists?(full_dir) do
85-
{:ok, files} = File.ls(full_dir)
86-
svg_files = Enum.filter(files, &String.ends_with?(&1, ".svg"))
87-
Mix.shell().info(" Found #{length(svg_files)} icons in #{dir}")
88-
89-
Enum.map(svg_files, fn file ->
90-
name = Path.basename(file, ".svg") <> suffix
91-
{:ok, content} = File.read(Path.join(full_dir, file))
92-
encoded = encode_svg(content)
93-
94-
variable = " --hero-#{name}: url('data:image/svg+xml;utf8,#{encoded}');"
95-
utility = generate_utility_class("hero", name, size)
96-
97-
{variable, utility}
98-
end)
99-
else
100-
[]
101-
end
102-
end)
103-
|> Enum.unzip()
104-
105-
Mix.shell().info("✅ Generated #{length(variables)} Heroicon classes")
106-
%{variables: variables, utilities: utilities}
10772
end
10873
end
10974

75+
defp generate_heroicons_from_dir(base_dir) do
76+
variants = [
77+
{"", "24/outline", "1.5rem"},
78+
{"-solid", "24/solid", "1.5rem"},
79+
{"-mini", "20/solid", "1.25rem"},
80+
{"-micro", "16/solid", "1rem"}
81+
]
82+
83+
Mix.shell().info("🎨 Processing Heroicons...")
84+
85+
{variables, utilities} =
86+
variants
87+
|> Enum.flat_map(&process_variant(base_dir, &1, "hero"))
88+
|> Enum.unzip()
89+
90+
Mix.shell().info("✅ Generated #{length(variables)} Heroicon classes")
91+
%{variables: variables, utilities: utilities}
92+
end
93+
11094
defp generate_fontawesome do
11195
base_dir = "deps/fontawesome/svgs"
11296

113-
if !File.exists?(base_dir) do
97+
if File.exists?(base_dir) do
98+
generate_fontawesome_from_dir(base_dir)
99+
else
114100
Mix.shell().info("⚠️ FontAwesome not found")
115101
%{variables: [], utilities: []}
102+
end
103+
end
104+
105+
defp generate_fontawesome_from_dir(base_dir) do
106+
variants = [
107+
{"", "regular", "", "1.25rem"},
108+
{"-solid", "solid", "", "1.25rem"},
109+
{"", "brands", "brand-", "1.25rem"}
110+
]
111+
112+
Mix.shell().info("🎨 Processing FontAwesome...")
113+
114+
{variables, utilities} =
115+
variants
116+
|> Enum.flat_map(&process_fa_variant(base_dir, &1))
117+
|> Enum.unzip()
118+
119+
Mix.shell().info("✅ Generated #{length(variables)} FontAwesome classes")
120+
%{variables: variables, utilities: utilities}
121+
end
122+
123+
defp process_variant(base_dir, {suffix, dir, size}, prefix) do
124+
full_dir = Path.join(base_dir, dir)
125+
126+
if File.exists?(full_dir) do
127+
process_svg_files(full_dir, dir, suffix, size, prefix, "")
128+
else
129+
[]
130+
end
131+
end
132+
133+
defp process_fa_variant(base_dir, {suffix, dir, name_prefix, size}) do
134+
full_dir = Path.join(base_dir, dir)
135+
136+
if File.exists?(full_dir) do
137+
process_svg_files(full_dir, dir, suffix, size, "fa", name_prefix)
116138
else
117-
variants = [
118-
{"", "regular", "", "1.25rem"},
119-
{"-solid", "solid", "", "1.25rem"},
120-
{"", "brands", "brand-", "1.25rem"}
121-
]
122-
123-
Mix.shell().info("🎨 Processing FontAwesome...")
124-
125-
{variables, utilities} =
126-
Enum.flat_map(variants, fn {suffix, dir, name_prefix, size} ->
127-
full_dir = Path.join(base_dir, dir)
128-
129-
if File.exists?(full_dir) do
130-
{:ok, files} = File.ls(full_dir)
131-
svg_files = Enum.filter(files, &String.ends_with?(&1, ".svg"))
132-
Mix.shell().info(" Found #{length(svg_files)} icons in #{dir}")
133-
134-
Enum.map(svg_files, fn file ->
135-
name = name_prefix <> Path.basename(file, ".svg") <> suffix
136-
{:ok, content} = File.read(Path.join(full_dir, file))
137-
encoded = encode_svg(content)
138-
139-
variable = " --fa-#{name}: url('data:image/svg+xml;utf8,#{encoded}');"
140-
utility = generate_utility_class("fa", name, size)
141-
142-
{variable, utility}
143-
end)
144-
else
145-
[]
146-
end
147-
end)
148-
|> Enum.unzip()
149-
150-
Mix.shell().info("✅ Generated #{length(variables)} FontAwesome classes")
151-
%{variables: variables, utilities: utilities}
139+
[]
152140
end
153141
end
142+
143+
defp process_svg_files(full_dir, dir, suffix, size, prefix, name_prefix) do
144+
{:ok, files} = File.ls(full_dir)
145+
svg_files = Enum.filter(files, &String.ends_with?(&1, ".svg"))
146+
Mix.shell().info(" Found #{length(svg_files)} icons in #{dir}")
147+
148+
Enum.map(svg_files, fn file ->
149+
generate_icon_css(full_dir, file, suffix, size, prefix, name_prefix)
150+
end)
151+
end
152+
153+
defp generate_icon_css(full_dir, file, suffix, size, prefix, name_prefix) do
154+
name = name_prefix <> Path.basename(file, ".svg") <> suffix
155+
{:ok, content} = File.read(Path.join(full_dir, file))
156+
encoded = encode_svg(content)
157+
158+
variable = " --#{prefix}-#{name}: url('data:image/svg+xml;utf8,#{encoded}');"
159+
utility = generate_utility_class(prefix, name, size)
160+
161+
{variable, utility}
162+
end
154163
end

0 commit comments

Comments
 (0)