From ba5f32bad335b91e25785bcdc3ab5fa4a393e2f1 Mon Sep 17 00:00:00 2001 From: CJYSEX <302750122+CJYSEX@users.noreply.github.com> Date: Thu, 23 Jul 2026 12:43:41 +0800 Subject: [PATCH] feat: add functional plugin icons --- .../cjysa-documents/.codex-plugin/plugin.json | 2 + plugins/cjysa-documents/assets/icon.png | Bin 0 -> 3454 bytes plugins/cjysa-documents/assets/icon.svg | 6 ++ plugins/cjysa-documents/assets/logo.png | Bin 0 -> 3454 bytes plugins/cjysa-pdf/.codex-plugin/plugin.json | 2 + plugins/cjysa-pdf/assets/icon.png | Bin 0 -> 3834 bytes plugins/cjysa-pdf/assets/icon.svg | 7 ++ plugins/cjysa-pdf/assets/logo.png | Bin 0 -> 3834 bytes .../.codex-plugin/plugin.json | 2 + plugins/cjysa-presentations/assets/icon.png | Bin 0 -> 3467 bytes plugins/cjysa-presentations/assets/icon.svg | 7 ++ plugins/cjysa-presentations/assets/logo.png | Bin 0 -> 3467 bytes .../.codex-plugin/plugin.json | 2 + plugins/cjysa-spreadsheets/assets/icon.png | Bin 0 -> 3426 bytes plugins/cjysa-spreadsheets/assets/icon.svg | 7 ++ plugins/cjysa-spreadsheets/assets/logo.png | Bin 0 -> 3426 bytes tools/render_plugin_icons.py | 80 ++++++++++++++++++ 17 files changed, 115 insertions(+) create mode 100644 plugins/cjysa-documents/assets/icon.png create mode 100644 plugins/cjysa-documents/assets/icon.svg create mode 100644 plugins/cjysa-documents/assets/logo.png create mode 100644 plugins/cjysa-pdf/assets/icon.png create mode 100644 plugins/cjysa-pdf/assets/icon.svg create mode 100644 plugins/cjysa-pdf/assets/logo.png create mode 100644 plugins/cjysa-presentations/assets/icon.png create mode 100644 plugins/cjysa-presentations/assets/icon.svg create mode 100644 plugins/cjysa-presentations/assets/logo.png create mode 100644 plugins/cjysa-spreadsheets/assets/icon.png create mode 100644 plugins/cjysa-spreadsheets/assets/icon.svg create mode 100644 plugins/cjysa-spreadsheets/assets/logo.png create mode 100644 tools/render_plugin_icons.py diff --git a/plugins/cjysa-documents/.codex-plugin/plugin.json b/plugins/cjysa-documents/.codex-plugin/plugin.json index 2eae077..9089c16 100644 --- a/plugins/cjysa-documents/.codex-plugin/plugin.json +++ b/plugins/cjysa-documents/.codex-plugin/plugin.json @@ -20,6 +20,8 @@ "capabilities": ["Interactive", "Read", "Write"], "websiteURL": "https://git.cjysa.top/CJYSA/codex-free-market", "brandColor": "#2563EB", + "composerIcon": "./assets/icon.png", + "logo": "./assets/logo.png", "defaultPrompt": [ "把这份内容整理成一份专业的 Word 文档。", "在保留格式的前提下修改这个 DOCX。", diff --git a/plugins/cjysa-documents/assets/icon.png b/plugins/cjysa-documents/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..10f83868489805db754162d2657cf6db453e4144 GIT binary patch literal 3454 zcmds4Sy)s@7XI(;rn_0Y0Z|m88BpVhXd@!Vpxtp=;(~w)Dk@4lnCK|GMhR$h(Gk!O zm5d)Mf+I#^NEAd_#09x-!6-1q1rTJD7(s#pA|hK)-Rt0&r^yrZF#S?>&+?zYPMxY# zy~o@06Jvuh1^|o~%vXO3&}2$OA|gXq#DiWUpSM8$u}?&5+vCf<`Qb4F=|FwBfpUj+DrV2L-Ke2A)TK#by&B=3WqcRa3(G7iO zK_fU$KCab1TTs!YT=;>=rok$vJPuXNIq}Q`6Mc`vH|Cmn!y;Mk2NnWc0Jp#4dIig{ATlD9H`_mQH&jpqbIGSsw6-Qb6&l zB1yt5lnP-s<7^aszLFs^cgKYmDPZQ>KI64i%+y5&uRRRHzI>axs}xOA3|t7i&k4K( z>|G5x!I$~r2YJCJ=gYc}0JeLX6!n8tTHV&HG5ArAjls_To^lF(6zy9^3oG zOm#}N8xoXwP+xJ1Q){dX{86 zyv8FWsDQ&W^d5-`qt@P#cfrgIjvgnY*GI1+-hTMc`2 zV7ZJ+SO}cC-HIOwtiu|rTMY{mS)|5EQ(#{_-0g_J8I>>>2rLPqGgM^Uu2*GFbxi=4 z+0q%F#9uA+P6nDwS`jG&j-5r69g|65lJ;N{!L^c6KK8)gj#-Q&q48IqMm3=ktHx3y z*hkEWpLIMU2`NE)3RZHXAIHX#!0cC}keHRJF)`(sUZhf$Gha= z(Ed0J|2vCItLF^#XT6C7@^k97|FzB@pgn|wD)zh5Z9_Z4mFlnUgH4A?dt;mn$o)iG z^Pg-{(iYnKzJ-!%x+h>?0vgZykSo8x%+lmEFP~DJUpsW*woJzr5tt9Jry!0<@2Zp@;G+!yYv%}{)9)rn)T?(=_#-SdJDGh zDx?X@axsVU{(UoncdOZucd?YW<6cC(-C`cT;^)YK6o05m-1>^8Ye*A7M&b8b0Xc5V z40(2!zdgN%*FP?Q=+Emf9OLyf^m%<=GU3PhKf1H{o&Ma{DLRo#2$e4Aw@!N%X+%3* z&(-J*i6}9+W%^*PE`+fI$2}rit7R)V|w9qzu0Yy zuJKi6-Ej);HiK)Y;N%=%oS(ca=z%w-cp?yKw0D`B>5s*8en|pmI|@v6*`t^hHf{)5 zC8|$5A<)F?fQ0qQny6Tvz~rm(V2>WskBvTR$ez)yMaJjJfdQv_157T8P=0;dqjqI- z=Yd({gebT`Qim6T*B!4`1--OE8 zT{n$RqnwcKcrto6l}&$)@ + + + + + diff --git a/plugins/cjysa-documents/assets/logo.png b/plugins/cjysa-documents/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..10f83868489805db754162d2657cf6db453e4144 GIT binary patch literal 3454 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 + + + + + + diff --git a/plugins/cjysa-pdf/assets/logo.png b/plugins/cjysa-pdf/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..68696f8db8b0d334f83ebb1bf974adba84d6eb9d GIT binary patch literal 3834 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 Qd}P78)q$(7|4Dr0Us0wSwg3PC literal 0 HcmV?d00001 diff --git a/plugins/cjysa-presentations/assets/icon.svg b/plugins/cjysa-presentations/assets/icon.svg new file mode 100644 index 0000000..9c20184 --- /dev/null +++ b/plugins/cjysa-presentations/assets/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/plugins/cjysa-presentations/assets/logo.png b/plugins/cjysa-presentations/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6fbd6e366d7baf5f16b518e2b6508d614e94687a GIT binary patch literal 3467 zcmd5pK+y6K0?}1b2aEXVEQ(5i9qYCbq9{HBOV{pnon_iT_K!^NobR09 z`JKmi?zzW;0@qkinLPyntk{GyOlJAwZbZhS`ZT-po`yra1-qHfw?+a!$yHyGJx=id%dD3N-W+$n z5HDW)L#U`NYMcjWrMmVfOaHuAXxiuzu0c%mI7&wd#8tH7lZ%40Avm$jGWe`Ra25n( zWtLvfEBX^q&02rHcxt%D3)NVs`r)ekcsC21$&1I99ZT$FVNSdRES`g&;sTqH#dB$L zE*#}MbZQE?N*eBzfGJmc(NAw^>8Ay;6YIGiMi6##rX=3yx*MUm!jXgWMLn4VmUygD zQji>>LxS&x<>VkmvQ0<%n7du<47BKuh1iHF+-~HZIOk@B%y($z}^YbtVrx+Fj-G+41=&nq2+>Q7J45 zYpNV2U^8k)==|*|HrOl|2dFL#D`((cGi_j(`lcgI{L+d6GS#i;sJPzB0%XsW|3Jm} zt>_?YDGWo!x2$L&Q{Qn!#h0y6NUmuXg8yv}1U)M`HDU!&VQmbKe*ubo=K|>&5ST#G zyD&>g(v2)V>0}M0?_S%u;{8txTx=rpM!Xxt?+$pEmr5MPMXTVeysm={ld2K8*Hw1vQZwu$fs1XDG$W{VsbjmHMNQ=KTGG`CM5E(_cJN$p zEYapGo-nWtW)S40d$h0!V#JSmcnR2(r$GV8+ zKHjRt1H|I}v=9y&Gc*^gnkB~#><1j+E;Zqe#q62@SpV>Z4KI1@(lQptI+TlC z8YuaQj|gVDE)j20XKUxd!WR`5sgDiyLOQ;n_*-o2!P0X{R9phY-MYHc(5Rc>ZVO2< zsf_A}h96Y_7QIdEd-;=@|G!rtlMKRM?O>e#QOutGMI$T0{y7omFDmigNCpc)yr#rx z%+){9jr1B`i)g{wT%r%j628}PLgAlnD8zPZ2aV-DM6nAJm_3=3wjZPjxDy0qChw&) zCK`Wo={L=GaM}}d$Z!11lEOQ!dPi7XIjM$y8I1@oyNcvjO-mEv4JG;~!25DikxY&* zar^%FDorH&7cR1u3DBPr+E!8|SR-xyqW#Xsmy;^Jcacf|M$&CrR!81ad+|2nmWGJv zS(-_q{3^BI9vp>$Ya}jDh?asi115J5a_+qq)9o%Hc>^Wxew0XT``PS_U8aV zSlCg)NWEuxnn}m+7k6RT4)M>WLq_IIzGgfnBF_7@ydrIyq9UD^XwMgpu7IB5)gLmj ze08YG5>adpC=D(pE>M@5uW(7K35c`&Z_7(^fEuMiBbMLXFgN8TlU7f%J7dMCAR3C{QINcHXI-*?ars5+9j{PbAovUx0c$5Xyk7I zyl9_zvbzIqDNq_70dNB+#nD4r<|;m z51FS1(IIHRN@`5e`9er2z#>VT77;v52JCyS^)#5jg9D2qTLp;VSu%q8Mz;hZf)^Gj z<|}EIB7)b+#8cF>G(<3HLBo6_n-qvZpG?EP@{H_)jOQqdr#8DAX>ncp?#`lXd>T{> zjdht&eK-u+y==X5<4?=*xX=2+kL!FjDJ`}j4oG38$e(esyW0{p{cX)1XAZArf;6=} zFh!nT0LRT3Ebil|zGxMdrDQT7h;Nd8<)lyJz(sH4*xn5~M@OiQW!jkU_HgBd;Vrv+ z<#Ja!VsDFrVVBOl5V9N?Fk03n3WVb2OsKBv7j1yzL>}hAqsE< z={A4!I31rtNAR0dO@nlt#YC|JH(fUu=1j8yx!Y(n2a;@=_)eaVy;9FF={xOHKV6wi Qd}P78)q$(7|4Dr0Us0wSwg3PC literal 0 HcmV?d00001 diff --git a/plugins/cjysa-spreadsheets/.codex-plugin/plugin.json b/plugins/cjysa-spreadsheets/.codex-plugin/plugin.json index 77f29d9..a0c9b73 100644 --- a/plugins/cjysa-spreadsheets/.codex-plugin/plugin.json +++ b/plugins/cjysa-spreadsheets/.codex-plugin/plugin.json @@ -20,6 +20,8 @@ "capabilities": ["Interactive", "Read", "Write"], "websiteURL": "https://git.cjysa.top/CJYSA/codex-free-market", "brandColor": "#107C41", + "composerIcon": "./assets/icon.png", + "logo": "./assets/logo.png", "defaultPrompt": [ "把这份 CSV 整理成带公式和格式的 Excel。", "分析这个工作簿并解释关键指标。", diff --git a/plugins/cjysa-spreadsheets/assets/icon.png b/plugins/cjysa-spreadsheets/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9c86914ae9cfac3c718f717f43527fdbdb20a847 GIT binary patch literal 3426 zcmc&%dr(tn7C-kAAVC5FEd&rj(e+WpP`3sJ8+_v`M8&o^+UDY;TU!Y)5iEvWK}lPw zb=R)OAuQB(WxKM1gF=-6SJ1e&qPSQ^Kyqn{)dD7nkU&VX-wi_D?M%n9-Q7R#wPFsnWdZp_QjZbnZFDy_}ks6BER%TXg_1>Vb&b)SuTvOs@ zdZXreOQ|IE^Hz6#O}C5-8^eYlwZ5C45|K3{Jk$VkPqvu{uM^!^Opr^67&eg?oSTmX zHvbu#5%p!rB0~yJuU;NNxNfE+aGHgv9h>P4oc2Lf%w~E!PJ84A5ZuLdJWfyg%)M-0 zsKFZ}OjwFrR(O0k?D^LD?eKj|0tf53BIxHuRTK5@RIJ;lyeRb=M9p;D%gg9{Cs`8! zt-a!}y$*Ib6XO)i#12O?*X9P0tHOf4@KpbWe^N4TRI_!bRDUEMfuE9C8|2V#G;UkEI(UJGUatl+)? zLG6JMm#oX>kT;~RP@+y-!lI&tEO5!M%!Is@ASgN`OZ-6y@S&gS#84eZBxXuGLNH_y zp^a9*2Yfj+%l%4y0eP%x{>Mp24X#E#+}XU8*_XW1{$pICK=xf}%$*;tOz zrU1B?a&?y-V7dbXplnL@d&mHwkG0Sj4%#q6Do!}ZfOsND9up8|btYeqsCY02B*Lj) z5tMX(nvjm#W)b?B+czDkJ~_lSX@%_^goQo^V2vAGN014|%BQ)!sQ^X3Py=k>N`%^{ zPOQ}g7_#bOSyXnOh?edDo=slj z%PI4?%RCqtY9)<62dCL>39c(fY;G|Rg<~psp>)wQMeJZL_GpT2!EmepK7Y$j^JnJk z8&oLDhd`;)A#wNbN5ucbnJ2Ltjm}TKeP#hB23LEETLX+WEVxFa1lUvfB<#-#EFGwU zdjo|wOS*m)zpk~)m_IzfR%;o0XWPT3fg0Prs&T_#ObA2eXV1(t+xp9lLazM^@p>*B zit?-HkmstaGi#00f-hNi7RK}s>Waq=M}JQJY|TD%WJa=RtdbaO_DxnJJy#0Lhmam( z;%K*x^}#b^K9{Heg@m5JW5$)OsE9Hpb?e&1#s}*QMOo)5?NXPKM){>x)Y#DOO|@m! zn$vzP){|PXk)!GOb-LmISa{Et4q>JQQq9(U{Q#<-Jyz3p{VHX)nWalYwKDoF|4&+n zydpFAxo1jnUZ>^v(y>Y<9m8@R)cT}Z%sY+~9x)i`g{sB&XEN^nSfI?Vmp$Qt2Sysb z4^9TJsW|9gj93A|zhgnWIO9WzQ?fz*v4M}3g?T`Rjhls95XitE#p>4Nlg(Gm6kyY>BOALsm=j<7$x9XO%?)DaB(L`G-n&_WI1t^@ zBimA(-G=1K$H%9`6aY5SJ3hHp>%S9|+P4ATIvvTrPPdaUxt*$1icF zT!lP%tL;?B97E0M{x0YOXBq=v7qSrqF`xrk5_Q{#xt6LQSBdn!=V{Jr?rZ87kgI;!FQ|(vkM)N*^Z#rzVjM;i5 zoS>i$@;}Ksj2w(SvLpjZXh|eNwYb_OEGpw1CKkm(yyiS>FN->c zD1M%GH;ZyYRGN?F=y>oBWJAR^L*;Zh70CmYhL)gzB_GTH)8W%v1@J$KgxBI}3HO0} Y{r+QZY2Ov(qRkmrE{j=uYB7=hFTG^_b^rhX literal 0 HcmV?d00001 diff --git a/plugins/cjysa-spreadsheets/assets/icon.svg b/plugins/cjysa-spreadsheets/assets/icon.svg new file mode 100644 index 0000000..c725808 --- /dev/null +++ b/plugins/cjysa-spreadsheets/assets/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/plugins/cjysa-spreadsheets/assets/logo.png b/plugins/cjysa-spreadsheets/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9c86914ae9cfac3c718f717f43527fdbdb20a847 GIT binary patch literal 3426 zcmc&%dr(tn7C-kAAVC5FEd&rj(e+WpP`3sJ8+_v`M8&o^+UDY;TU!Y)5iEvWK}lPw zb=R)OAuQB(WxKM1gF=-6SJ1e&qPSQ^Kyqn{)dD7nkU&VX-wi_D?M%n9-Q7R#wPFsnWdZp_QjZbnZFDy_}ks6BER%TXg_1>Vb&b)SuTvOs@ zdZXreOQ|IE^Hz6#O}C5-8^eYlwZ5C45|K3{Jk$VkPqvu{uM^!^Opr^67&eg?oSTmX zHvbu#5%p!rB0~yJuU;NNxNfE+aGHgv9h>P4oc2Lf%w~E!PJ84A5ZuLdJWfyg%)M-0 zsKFZ}OjwFrR(O0k?D^LD?eKj|0tf53BIxHuRTK5@RIJ;lyeRb=M9p;D%gg9{Cs`8! zt-a!}y$*Ib6XO)i#12O?*X9P0tHOf4@KpbWe^N4TRI_!bRDUEMfuE9C8|2V#G;UkEI(UJGUatl+)? zLG6JMm#oX>kT;~RP@+y-!lI&tEO5!M%!Is@ASgN`OZ-6y@S&gS#84eZBxXuGLNH_y zp^a9*2Yfj+%l%4y0eP%x{>Mp24X#E#+}XU8*_XW1{$pICK=xf}%$*;tOz zrU1B?a&?y-V7dbXplnL@d&mHwkG0Sj4%#q6Do!}ZfOsND9up8|btYeqsCY02B*Lj) z5tMX(nvjm#W)b?B+czDkJ~_lSX@%_^goQo^V2vAGN014|%BQ)!sQ^X3Py=k>N`%^{ zPOQ}g7_#bOSyXnOh?edDo=slj z%PI4?%RCqtY9)<62dCL>39c(fY;G|Rg<~psp>)wQMeJZL_GpT2!EmepK7Y$j^JnJk z8&oLDhd`;)A#wNbN5ucbnJ2Ltjm}TKeP#hB23LEETLX+WEVxFa1lUvfB<#-#EFGwU zdjo|wOS*m)zpk~)m_IzfR%;o0XWPT3fg0Prs&T_#ObA2eXV1(t+xp9lLazM^@p>*B zit?-HkmstaGi#00f-hNi7RK}s>Waq=M}JQJY|TD%WJa=RtdbaO_DxnJJy#0Lhmam( z;%K*x^}#b^K9{Heg@m5JW5$)OsE9Hpb?e&1#s}*QMOo)5?NXPKM){>x)Y#DOO|@m! zn$vzP){|PXk)!GOb-LmISa{Et4q>JQQq9(U{Q#<-Jyz3p{VHX)nWalYwKDoF|4&+n zydpFAxo1jnUZ>^v(y>Y<9m8@R)cT}Z%sY+~9x)i`g{sB&XEN^nSfI?Vmp$Qt2Sysb z4^9TJsW|9gj93A|zhgnWIO9WzQ?fz*v4M}3g?T`Rjhls95XitE#p>4Nlg(Gm6kyY>BOALsm=j<7$x9XO%?)DaB(L`G-n&_WI1t^@ zBimA(-G=1K$H%9`6aY5SJ3hHp>%S9|+P4ATIvvTrPPdaUxt*$1icF zT!lP%tL;?B97E0M{x0YOXBq=v7qSrqF`xrk5_Q{#xt6LQSBdn!=V{Jr?rZ87kgI;!FQ|(vkM)N*^Z#rzVjM;i5 zoS>i$@;}Ksj2w(SvLpjZXh|eNwYb_OEGpw1CKkm(yyiS>FN->c zD1M%GH;ZyYRGN?F=y>oBWJAR^L*;Zh70CmYhL)gzB_GTH)8W%v1@J$KgxBI}3HO0} Y{r+QZY2Ov(qRkmrE{j=uYB7=hFTG^_b^rhX literal 0 HcmV?d00001 diff --git a/tools/render_plugin_icons.py b/tools/render_plugin_icons.py new file mode 100644 index 0000000..fc40bf0 --- /dev/null +++ b/tools/render_plugin_icons.py @@ -0,0 +1,80 @@ +from pathlib import Path + +from PIL import Image, ImageDraw + + +ROOT = Path(__file__).resolve().parents[1] +SIZE = 512 + + +def rounded(draw, box, radius, fill): + draw.rounded_rectangle(box, radius=radius, fill=fill) + + +def document(path, color): + image = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0)) + draw = ImageDraw.Draw(image) + rounded(draw, (0, 0, 511, 511), 112, color) + draw.polygon([(146, 92), (312, 92), (366, 146), (366, 420), (146, 420)], fill="white") + draw.polygon([(312, 92), (312, 162), (366, 162)], fill="#BFDBFE") + for y, width in [(232, 144), (286, 144), (340, 102)]: + draw.line((184, y, 184 + width, y), fill=color, width=24) + image.save(path) + + +def pdf(path, color): + image = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0)) + draw = ImageDraw.Draw(image) + rounded(draw, (0, 0, 511, 511), 112, color) + draw.polygon([(146, 92), (312, 92), (366, 146), (366, 420), (146, 420)], fill="white") + draw.polygon([(312, 92), (312, 162), (366, 162)], fill="#FECACA") + draw.arc((180, 198, 318, 338), 205, 345, fill=color, width=22) + draw.line((184, 350, 328, 350), fill=color, width=22) + image.save(path) + + +def spreadsheet(path, color): + image = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0)) + draw = ImageDraw.Draw(image) + rounded(draw, (0, 0, 511, 511), 112, color) + rounded(draw, (112, 106, 400, 406), 20, "white") + draw.rectangle((144, 164, 368, 362), fill="#DCFCE7") + for y in (230, 296): + draw.line((144, y, 368, y), fill=color, width=18) + for x in (218, 292): + draw.line((x, 164, x, 362), fill=color, width=18) + draw.line((144, 132, 368, 132), fill="#86EFAC", width=26) + image.save(path) + + +def presentation(path, color): + image = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0)) + draw = ImageDraw.Draw(image) + rounded(draw, (0, 0, 511, 511), 112, color) + rounded(draw, (104, 114, 408, 340), 18, "white") + draw.line((256, 340, 256, 398), fill="white", width=24) + draw.line((188, 398, 324, 398), fill="white", width=24) + draw.rectangle((154, 230, 202, 292), fill="#FED7AA", outline=color, width=12) + draw.rectangle((232, 180, 280, 292), fill="#FED7AA", outline=color, width=12) + draw.rectangle((310, 204, 358, 292), fill="#FED7AA", outline=color, width=12) + draw.line((138, 340, 374, 340), fill="#FED7AA", width=14) + image.save(path) + + +def main(): + assets = { + "cjysa-documents": (document, "#2563EB"), + "cjysa-pdf": (pdf, "#DC2626"), + "cjysa-spreadsheets": (spreadsheet, "#107C41"), + "cjysa-presentations": (presentation, "#C43E1C"), + } + for plugin, (builder, color) in assets.items(): + target = ROOT / "plugins" / plugin / "assets" + target.mkdir(parents=True, exist_ok=True) + builder(target / "icon.png", color) + builder(target / "logo.png", color) + print(target / "icon.png") + + +if __name__ == "__main__": + main()