From 84bdc582ea9edebc844b0e25e18a16d22c1bc587 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sat, 31 Aug 2024 01:36:40 +0300 Subject: [PATCH] feat(eaglemode/plugins): bootstrap Yandex Tracker plugin Bootstraps a plugin (that doesn't do anything yet) for accessing Yandex Tracker through Eagle Mode. This commit only initialises the plugin files, it doesn't actually do anything other than print the word "Loaded". API docs for future development: https://yandex.cloud/ru/docs/tracker/about-api The next steps will be to figure out the emModel classes and the threading model for fetching the remote data. Change-Id: Ifce8bc2a61c4fd0c4a591013acbf428a9f5803f8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12398 Tested-by: BuildkiteCI Reviewed-by: tazjin --- tools/eaglemode/plugins/yatracker/default.nix | 18 ++++++ .../emCore/FpPlugins/PlYaTracker.emFpPlugin | 6 ++ tools/eaglemode/plugins/yatracker/logo.webp | Bin 0 -> 13808 bytes .../yatracker/makers/PlYaTracker.maker.pm | 47 ++++++++++++++ .../yatracker/src/PlYaTracker/PlYaTracker.cpp | 58 ++++++++++++++++++ 5 files changed, 129 insertions(+) create mode 100644 tools/eaglemode/plugins/yatracker/default.nix create mode 100644 tools/eaglemode/plugins/yatracker/etc/emCore/FpPlugins/PlYaTracker.emFpPlugin create mode 100644 tools/eaglemode/plugins/yatracker/logo.webp create mode 100644 tools/eaglemode/plugins/yatracker/makers/PlYaTracker.maker.pm create mode 100644 tools/eaglemode/plugins/yatracker/src/PlYaTracker/PlYaTracker.cpp diff --git a/tools/eaglemode/plugins/yatracker/default.nix b/tools/eaglemode/plugins/yatracker/default.nix new file mode 100644 index 000000000..3ffc42029 --- /dev/null +++ b/tools/eaglemode/plugins/yatracker/default.nix @@ -0,0 +1,18 @@ +{ depot, pkgs, ... }: + +let + em = depot.tools.eaglemode; + emSrc = with pkgs; srcOnly eaglemode; +in +(em.buildPlugin { + name = "yatracker"; + version = "canon"; + src = ./.; + target = "PlYaTracker"; +}).overrideAttrs (_: { + postInstall = '' + mkdir -p $out/icons + ${pkgs.imagemagick}/bin/convert $src/logo.webp $out/icons/yandex-tracker.tga + ''; +}) + diff --git a/tools/eaglemode/plugins/yatracker/etc/emCore/FpPlugins/PlYaTracker.emFpPlugin b/tools/eaglemode/plugins/yatracker/etc/emCore/FpPlugins/PlYaTracker.emFpPlugin new file mode 100644 index 000000000..637878844 --- /dev/null +++ b/tools/eaglemode/plugins/yatracker/etc/emCore/FpPlugins/PlYaTracker.emFpPlugin @@ -0,0 +1,6 @@ +#%rec:emFpPlugin%# + +FileTypes = { ".YaTracker" } +Priority = 1.0 +Library = "PlYaTracker" +Function = "PlYaTrackerPluginFunc" diff --git a/tools/eaglemode/plugins/yatracker/logo.webp b/tools/eaglemode/plugins/yatracker/logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..460d57d72c33c79af4f78846dd59990622ab26d6 GIT binary patch literal 13808 zcmWIYbaQ)Q%D@or>J$(bU=hK^z`!8Dz`!8S3_^}R0UrM13=E7P+H?O~Fa7x6Hg0|5 zi=eePG|k?`vY2i&%{#HnaLEqNmzyI?kJ`PIw2r)-mRxf>uf~0&jOC3RNxe%lH++{k z(k8S)L6%KGV#aZK1s>z|pK9#p{dYOS!Z7*!`%CtE|Blx0oBSv8)U_?|>ur8Vmz9-y zK8|uZa%TMxKlkrP?X7E5&QH4k^EtQwk#FxG@h`F6;D6_G@$}pqwQt-O%HF*e zSMm48JKodJ&h@;O^*DBmuW$b5w9^-(O;_wN-QJfIX=_~a{Z3){L>e+>Hq$>*Fyi-Bk63v^=`cR_OoT=9l~ptt+5Pix7uKq{52)N zNhr^2wS#Qr+&noo;Yoa)n&koQVoPT33KZxs{C~*3;ovFXG^;2Ez%7SNKcPWR<#n$-PyLw=D3u$Fo)%}D)!PE$E-aQ&0N&)yWfqU zBBUMIx^LR+6CD3N-Z=|csi!IgpV{(7g|$xq@12G-8y_xriPtjFS;{1tTKOua^M9$= zFW#BYLcPn^rO(;9UT)^{+V{b3apGy`T-~bdce1xnR$qQ|;zF|}>JmSq3WCgxu3Jz0 z_9y4dx2Tj&rnlXT4V`P)jP7jibh{@y;|sgdz2DQe*{q(vl}oa~H>*C*^yda<$&HUM zxbUeSpYO7)M)Bf-={CZfCs?MdSAJIhzr-fx($8rMb|Sl0iOej0*%k0lI7`!cS?=bt zC)T;TsVDYmua*7j8|`gr^wBF@-R|XYZv)KLFcbl^K*67;?yVQ#&%)U4C!~JPbW>~dnG=WVo$_X1oZWhInb(sYSJRk3 zcUkq#F;{LXRJ}FfcbK{-&+5bFCtCSi4OcJco+v#1TvBkO=81`yn`L3EZC)Ni4oe}UQ|HQ`4Y=#SN@=weTpB>Tv zzwF7q=)W`k-k&~kaPuO`b2`#RAG^{cd#8);tn5;s{IZJ4^4Cl`p0q5(qOXTK&m2v0 zKNpvurhRYrgv0sYQ#E4!l&9~%&^+_VQ|0CQH9Zq&yqa+P_F0`H#mYs0MU+2t{N%L! zzdl#eJw>eOzx3XjZaIoV2Ob@lIF?=N!SptN6W7V6lnYwMocnD(ILdz*bX-XG;PT&= z%xAk^(QuFCQ3*F2hoXvliQpMQjVv3Bteh)$@_8=0dxS^FLsa(tM#h)MDn0S1cn&sE3hu zQpx2DLMpSKDwke*kfbs@^>FFM14=4$mO7UP%&$?I%lfy}e|@!wjr^C(mVxCHYo2|- zXc}8Iq2XESb;GxtCbY!8Ul7f7PEl~L#FF5eJ_SkJXREz?eovTC_k5xAleZpT+fV&^ zT&%Jz{#76U#5wy`8^<|Uy{d2x_t`EivS#)&<+j@smW1(K<$d_mBZOP2)aiD%M_B%r z>#TOiCvKSc=`!OdIhD2dPu+Sitg>#k>HXCnalTUdF}k%YXRmmv#5M7Nn0w}q3E3V= z>)Eo+9`}2s^jBnU?e$0tHo0Y^vSqVrWRC9AmD1}E?h;j4dG`IPoi*naHrl>ly>*-N z&bx~?PE$HKcm2v`SAysK%9L7FZ8+)9p>?xPR>*X|^YmZ4MegLg=Ta{%Rrcs-EV?H; z<@mL5=AWrbFZaG#UK=#=N8WXt%@hC3GV%ML_3LxNgk>LhH?de;4nLjaBDBZxuuZSa z56iQc*0yj>{dPe^?)XHW`9@ijQ&f&Q;rSmne?g={TnJpi@c7=$p zZe?J=c{sl{i>MhMZZFBdEPBkYW(MR zb(wN!ozu~p{L3q3?7#jJ=`7il#k(a~^LN73N&X5m?NnD^wo$o~zbYuga;eta6>hgD zgw(HfN|xPnN^rSVTeruW^O9H6^d`MF4^dmv5hvQd>U8~tg!+YA&aXAY{wj!0^iw!# zr?v7px5pOYki*vPS$97Lb(c@b(GTkU_OxX6mbF$n4u}5chrY;O9`mg(tAN4td!Fcw zjw98R9-S0lab42$zwPuyevF?7nIK_Kn%lYsP2b843 zBo@SIPwc2)5FwirvS!cPpxUOCnqH@^TQ6=rRd#BN80Swd*R1TtDcj1tz6ehGG?hyv z%JFng?o@Tj&Ywj`IoB>od#dQQnd{_FqgGChrRhg=ryT8Jsa?3J;_lLna+|3~T2%gu zvKq!L&kRp}>fx}+&e`%@z}Da{L)MeOSeE{nx9)9tM+SRr@t4rH{|brm>p2udr>xZq z;k@T~X zS^Fef%Ts4 z`F6)dFmKJ~DBh~-@osX=Tc*9%Pm^jVJosL;cB;sG=Igs0KW>W2;+gbk;kqyRv$kJr z<@ssyzVD5d@WdDWrE~RH-dnDxe1B=x&Pl6#TsPSt3bk8UeRAC--|w4ZQzV4`Ij-9{ z>yvJIugg|}p<~ZtMFh{8 zoet1d3ORYU(@Ak-dU09@XMNr|>!d@Ip5=%N@5?(^Y51_j_=%R`K{Z<~Cf1|x`m2IM zX8c>By6Dg$_oW?NujRfjUQzHO&~nkCv+fmFySd7egKGmLdUCYlVrE>s!c>^(7ySB2 ztN&~(6}_74S3(OP76pesa&i^U4NTz4F>y(GasP$q#D^cXbQ~WVR)fy=EBq?EPaegrGwX>@r_LF*MSDd6pWNLSH@g*|5wAVd$X`i9)+WxY0(c$~g zI{Aw43CrG#)U{gkBc|ksifc*4e%F#4TbxTgtQD-@{B)yT&9(%J}T1GipTijA2?qzH{@xg7ex=UMTFIy+i#a<_u zwg$HZVR5g8Cs#i@^mG|t7kBlnUrsSUwyga5=+K;H^902IT?vUVR9vLFzAErwUJh50 zORMyU6Y?&t&i%I(wANH#NeWCnxcHH4>v4HeMXi$hDKV;QH3nJLtOcfsTctt4_r8p75hh;&U(h>vR;gg=h(hc%Ex`@7h%R;L3NG zrlsdPg*n}YfI%aIHP zC0VjR=KhOq3H#UaZ*9(6i(lruw(_`MS?`did&BGRzP7OXzF)R?s~StUtk>J{^+Ecr z>3n)SW_&wa-g<9~{w2`|Tu*oN=2?K zmTlX+xx7sNhV$cntmbudj`WPxu~2l&8XK2Ng_+ZI*;)D4E=YN*=*1!* zxM}Kw6S=u1XRi6pOwg5$X63rOuBmHktCpzF;-vSDNx$tEB(mmC;TF5Np>n~4dpkvR zj(eYcz{~Z`NMn~`cU|n)0JDl|b+)Wr`g0e@EmvLI%y}hSM&p0nt*y)<8_H#$uIdhA zj&R>;#~PXw?Y7;^=_=#2OKX2Fm^9CPW!SdqQ3r}cUawy;D~RpvFUgP+58I=w(VA1=_c*W2E8duB$zHTu3 z6>`b(?t{`_Q#iErWf%FeJAB<8eqq_Cb+6brXI_?Gz__&J)R)OiSQjks)eCiNFq`8) z{aKUS6yp__0wc8@Dp-A2^{~9nSme3BY1$p{iQgKQ>f zu8LpeFuisQk4yOF`R&XOw`aXLzj{IG{$+O24xfL;EU?}GGfTchYq^bRtpm5cbA^nt zqjbGr`L!lDv$TM@kKNX?#Byi))k$PL?=0&IHfP-Og{jM!ealz3s?Cxn+rDdN6(91> zc3i%D%dJUMccVXBs^ufzDg%@5bt!Dkc5f=@ zue$S=ud2{N(pOWS=T~8puItL#OjSkGn&(->G1dN*v#sR*@=X286YdLhFS$ic(t6Er zP~+`cR^1@?_0PP%KQDNHZ8P4i-mUvE;z4T zyyD2(f(x(b)-4tc-_=mZZ|SIbZVRjJ`}!Gne`FYb-OFY#{c%qE%f3YA+#8P=f5rc5 zF{)8y7OuJOC@PcBsO__6G3Qo&2J1N?eu6od8&vsDEN1`S#t{8xqARb_ZpLgLJ1_3O z?X2HkeAZR{aZEa5Ny1=r3ATn=?7>iHUFWa~f1Lla*-*;!83r?NZ*!cZV<9(T4CNsU6r+)fWPU1OZlf&O{d4qRGm6Kq;rm5$F8`jG{P2D@U z@t}QK@B9>hX0!LnE1xQthS?{4WA6Jrq37R$PfL#|-3y$h!u54vTod3`b3naoGS30t<~3#i68tl{V>X^oy!YX>!-Kw$=9P!!JB1277O$KjK4r$< zhTt}p>mM3+O({EIxcJhI_$rfvbDZfn?!7ELV88T-_ZvNJM?@Z@pJ*Rto`Q|yBJLL`>cF$XzXlxqo&S1`Ol)7oU z^s}-9SC^j5EY(@6XnT<1&)&(F?Nje~zhj$o@A1jIrEeDJh3{dksOxyibbCkAJBB~? zGq!ewPFZ?{N$|_e(jD_`ugF*3lh#OFp?UbAh|$@(4RU4X=^LB0r^PvlF4o=t<-TmT z&IGs08Bg2h{XQ(E&D_|tE#>9r+t(sEPo!*ly5`=gZO53l@|eF}d)51^l#zqnP%+?Ik^eFLEN9Oc%RZUrk>& zYf|44mb zd2;`+*L|h(|B{d0(5P2e;Ix^Go7`0z?)k% z|K0yv^<_5m4X5Y)oBQ|m-}~R+-_@Hh7yaw{>-dTLuUE=mxbL-J_@47m^I!UJ;~&{a z)@A-r{rB~+@NfUW@-OE*+dI~u|IYAN^MCZ;-+!LJW->LIf2uzA@Bg3df93xy|KtDVKZE?G`m_IEeVg+?^Z)-l(SO|koloF@ z5`X*uo8M;jTmKgQU;WAOum0cZ|L%XQ|84*O|Nq~z|9by^|G)k1@dNCC*9Y+b*#G~3 z{XaMRhPwa1r+?M|8UJwpi|_~c{Qe2lHPrqV|953OzYJq`{U_V%Uk!B&OYPe3K0kP4 zcHc6mmC-@M?ZJv6O3Q!ciJwqBvHI4kSIkb`TV}uX^=kI2+rl-yrdgZY!%xLJP0NS8D;bY+%}Co{3sR}N<3mlSV~6~f zgR{A{)Ls-I16b?C?@s z*mGBKQmb1N=k=`ozK6GlOznS*LYXVO*ic-%UJ9H*oZ0^#Av#nD@Uuaoc9h)k^{lir$78Gn# zJ}2#zP2>w}SBp85qjR({^Hv1UjmXe=mMeC1h4=JJ*?mq4{b#I;++P1X{XE#LhCmvB1I3ID5O_gT$?%nA`Pn z-KW(eT8XoM&h9Zj5or1>XQI#xr=xLq8C1VaeVVpi_|JLcGoL!PDKOuxIUu$7$n}|< zT)bO!bT5FSsq|xt1;mPCeZ7CBd-|NOI>+dJJ>%sY>E&Kbe4dA!}h3^b-c)5a8 zeA@onUE9~)ahf0#0LpH++!M1t7jaGhZ06BfqFDG;6rKn>w`94(@=YyAu^33cZ`S%k z6aRHg{Gd?Y=(J31+q9L2h614v!LE+qclYV{Q*ED*%UNj5S;7tq=)d14$?M5I`T+N| z>cl7F?~|36KIA+-n^+0aW z7E7aNy(b|>L0fDgQwHB$4{hF9P)QM*)aqXB_FIHQXa_Werrr5JJw>G~QQHyh2jh^-c0o*-gxSK9oe*PW_Mrrypu{D?~(>RfOE1__|>1C8$%t!em>`)2>d^SYYt z82NpAC<8;vj9Y0g{A#gp1f6W5u7JnndcP2tO`Tcnlg)VCZr|Eg(JBme7_1ar`fkU% z6ECe#$=&^wqwRU^4ddB${YVY~DU;fE@ul8+Nl;O7=+rOww8dH6;8GV}_DBl*r(8*W z>jHLvWW2x9#AB{GXDmS)pk?Gq?MeT|+ozu32Pd}Hm3LekIW<}@LL&rJhllX>~(gwv{W;5q}G;x`&Q?6{x*f1gdjtZYy^g(P=%i9Id{KQBwa0gb;| zCvP*ps-EAP{J(l`*BrPruI_E0p}s}ltz_=x^m|62(m(Ihj}G^4?Yjq71g~k{1QtP9 zZo95_`RR71?^o`+T#Kr^`e*v5E6-$>Z(qvfmH8tv^H%rwjth|5CxLXpgddkjv()X01|5ww2IYO#DopYU^&9)Zm4A$JIcH`*_ z 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 +#include +#include +#include + +class PlYaTrackerConfig final : public emRecFileModel, public emStructRec { + public: + static emRef Acquire(emContext& context, + const emString& name, + bool common = true); + + virtual const char* GetFormatName() const; + + emStringRec URL; + emStringRec Token; + + protected: + PlYaTrackerConfig(emContext& context, const emString& name); +}; + +emRef PlYaTrackerConfig::Acquire(emContext& context, + const emString& name, + bool common) { + EM_IMPL_ACQUIRE(PlYaTrackerConfig, context, name, common) +} + +const char* PlYaTrackerConfig::GetFormatName() const { return "PlYaTracker"; } + +PlYaTrackerConfig::PlYaTrackerConfig(emContext& context, const emString& name) + : emRecFileModel(context, name), + emStructRec(), + URL(this, "URL"), + Token(this, "Token") { + PostConstruct(*this); +} + +class PlYaTrackerFilePanel : public emFilePanel { + public: + PlYaTrackerFilePanel(ParentArg parent, const emString& name, + emRef config); + + private: + emRef Config; +}; + +PlYaTrackerFilePanel::PlYaTrackerFilePanel(ParentArg parent, + const emString& name, + emRef config) + : emFilePanel(parent, name, config), Config(config) {} + +extern "C" { +emPanel* PlYaTrackerPluginFunc(emPanel::ParentArg parent, const emString& name, + const emString& path, emFpPlugin* plugin, + emString* errorBuf) { + return new PlYaTrackerFilePanel( + parent, name, PlYaTrackerConfig::Acquire(parent.GetRootContext(), path)); +} +}