From a7c6c8c039af2854144205b9b3966aa38afd21ae Mon Sep 17 00:00:00 2001 From: Chris Gianelloni Date: Wed, 2 Aug 2023 15:38:16 -0400 Subject: [PATCH 1/2] feat: os notifications w/ beeep Signed-off-by: Chris Gianelloni --- assets/snek-icon.png | Bin 0 -> 6063 bytes go.mod | 5 ++ go.sum | 11 ++++ output/notify/notify.go | 116 +++++++++++++++++++++++++++++++++++++++ output/notify/options.go | 19 +++++++ output/notify/plugin.go | 36 ++++++++++++ output/output.go | 1 + 7 files changed, 188 insertions(+) create mode 100644 assets/snek-icon.png create mode 100644 output/notify/notify.go create mode 100644 output/notify/options.go create mode 100644 output/notify/plugin.go diff --git a/assets/snek-icon.png b/assets/snek-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f2bf020d97b36698483bf3eef3a7fd7e8ea5a2 GIT binary patch literal 6063 zcmV;g7f|SlP)Kl_Y#zE{%KELrj(&o%}F24fs-g9nC8rO?OJywc=_)i%v4$$Ckf z1W399@4Z0CYnw$@SF<2#7CfM|Ott}A1Ok{qJm4AIvTV)sm2~Gb?f1u#uMsu@V++`8 zX-PW6KKu9Gzxnsuf~gu`XcZK^YCNwNp~7lJr|l;k|mOL?B`avk?D zQtm*?ZKz5&LJYELb&)9^VoGLRx8-JB@2hISnA233tf{L?kcfsbO&v{DQ565PuIn+D zwF&4@uxv)gvh)s&(bYRVg6kYXQ8x-j{8VmQJ^tATVEtAN$p%$Z|2+{4#pceMMoUvQ z0RyD;e!ZD+i_~})*Y&=Kls{$jn%rj-fDNq|;kZAU zF}-Hx!j?wrs^drry(2btduFlA#J3XUsrJ&BGNk3=C)4 zf25oJ?{*#szRQbOKKj`LU_dNrElea8K(lun!P@!Y!3R1#Y)+Lp3 zXsj~O6fx;pRRK*ANKWOJ@obT2w{9nsEB=B_tH1u)0N|>ZzLTs>+`DeYBFunEGyqjm z&^0Jn&^rbN8?prl*8?FT7*L1=6kPArg?JKd7m`s(MnF{{TZHaWa6OQo%PVgkI>KNR<5}GP} z;!li%4KM74jk`fg$!psWaiFc|88)r{!lwhkhSp_evGAK;xbh+{n=Saum5?vGJoUy9 zFYit6qz?QW?{zL&#u6{Y;Id1!xuD&#J-O>>MeFda4 z4hz5j7Cpm7kdj-ks^#vRn)#<^yD5uk{NSc$To3O0FBlm2W%{J-!?owZpIitdX`4A; z`#nP`%YVpn`T5_?V|q=H|MO%ATYh{VIZJT&(=eKqJhA!r*4Suv7B61e`EdbI&h!P( zvcI+Lf|kVWh7dPj0!2r%{Lbw@@dCmjjk|7YW=3t0yKiacu1AjYpKlDID!!P!p931o zec}Nw_{JZ6;uYUi+4jni$3uaym@S(P;;T^Ti%@rzlz<0E}&%Z7p5>U}5o(Y*gox;C`K4CSg%XEYglR?lGw(c155i?X8D+8rl zkpK*5As#VknOQgg@S)Bbz`?2GfNQpfgb<5rl5vE9z7ZRMISnCdD~wZBt2RNQgew*& zFm?Y^-9uK1%Uw^B$~XY5T3kjlu5*ePqzZp7;O14;rOU?$il_=WE<_VaT?rVsO|1wN z-SZRiC}QG`J)Jg=E2*zAdEl!pzAba#xB8sR+6ybV`{wBY42)Wg<;5iPx1%jz`v3Kx zT)?!d09f8hAUp|Khc7L!Mb(T6J!3JyIYB5G`1;fW;Ca*QtK#&IxB%=p zX45ml1%LLrDvmy~oF%hkB_I?9?*H34Y`kX?`os?YZhwxEtbDIX@x-<)1U#?bnf`L0+n&SqAXoHAL{y?-gIFX`#=0#Fr_K*p zwfS!^U$OAP>C@^cS{~7$!aIBR@yz#Is3|i`k7WxknY>GN*<`VJZC{GN`Q-@9&YL+& z%xy>V?!i55x@SJI(1)v}r{5gp{*4avX4aCZk0+{xgW z{YMw@{a+pB&WHP1&{BKSj{1oen(He;%5_s`1tbO6^?WZ*_}?~ljf*Z=%#v^H;!De- z{P~r&)K{43njl~Fc(*IdKR?^e{$7O})-9P7DVC;{5D5inn%+X)pTEUdR+V$Z%4(_; z2C6E^7F>3Z@zWT z{8_)6(L9YvK%pY4;!T*dqUCVBXN27cJ4mO~fJCS&$?`HTnBPQoMXZzs`oM(<$QNwd zItSTzxQlEq0}@nKqqaK91@os-9uNDb@;!^s+mgXii)hGTeHI}@U>bgmZ|EAco2!^VvkD==bwO2qN9DwBeJF!T2$(txTk2Rcw~iAo zfe?PA=(?w4N(dT)ps5lK3PPr)W<2z%5dnq0-Tk8|3N%$2^rvhpb)^*8NC~zxIlTQi zWjxo0>N=4Ma!X3w8-Wy(%Ay3@jT<%Jj0_oLb^*L zBp6H!R$n@wWLczSO{9cqP+=?!>2xm7w(GJ}2Y~B6)Y&_7e@kxBqN6 z*I&JSk~s~T3O$2aaNHeJ8VrFfbo2~8daN&dQ)5*KSHdkTOqR?D;<$e9dq!=L`U;cB zzO$h8R_};Kw&3#Jhuc`OAdclor1T@-a6o0#ABOqituv^vFsY3DI_%}$qa5kUQCnu< zPNbFVDh&Sh8!bG!t3Wsum}EglQllW*IJM#M3s*`jTXL+gRxOnF9#)^*zl`bQqzb)XvwWG!)u;#zxtIsdh7kfVJk z1D*RG@8If-%1Z>jH`YnUbl&aCmDu_p9y!Y5>EYA5#-0abg_FxJSRMl-d2)GcGkjA{ zJph1e=->MNJ8e&or*rJ-4f1{;Cuh0*sCm9)N- zqI0mojVr4r?LL5^O12#fQE&u`fUZFc$CacrImXAb_kSWeK>+vpE2LetZ+~**w*9Sp zvZV6rq(rBb5DTizYYg-4e`{mMkqnp2i(xt52YP{7%cXOu$bF9==W844upN1da@^Zz z^6r3+0NVR4>M9HpQI&&jUB@UCcYI<10Py0K!@y-vZQ1?&J&*N~cZ^dKp4Tm_pgw7E zBa$_lcF73P~+1F?AM!U~#sfNO*uUTtvgOTVm2#%{U)FPrrl)qW6jLY@WCGh$H|)d=VxjQ76dSr#^hkrNzIusqC( za@zLJ0K2-)62Qab4izyCPf8wrZd)PyAD0C`?$XtB0zliZpUzg@_{wwJhiC2U$Tfum zDsvmcD2l+9l2}MZ{g7a&w%kP56!MnK3)@qKOoc>PqxEo*SKd|76hXl7=g1X3!U2T? zZ9N?A82mhkA35^rR);57jaJ~we+`DzSvOr#t$p#*BxMn8Le_=PQGqDe&&B~#j!g6H=~upEIZ!1f?uh)KzmeTUi^9?g92Y>A&50M=|-b?xPq&;IDv z>3Y%f{Ag`r_d%4pLEfJlQxzD>sywkHz`&S|rihXdVb{Sf zw(UIf1Y6hMb*`4IoWq@;wf3r-C+_{qO!Z8ozoH{}^=O#3UYo&DhiFJ8WGW~E3{6n5 z;9&cJ+_v-Z|C1Y6-N1&{bEdn_4F|*?Q)e}Yw|?h_rm{@IIpfzi?hli9REoAueNsnL zMX9ey2ki|b} zY&#a@V84N)z`LCV<~9aO=`=;aq2v9u9XiPLDuu(nE~z{?F0Ga&e}rTwFRmW@~2CLUBV4TbT%WFYNvY|uNJ&B@>J;_4rKG61aKsw2dAD$8R(ymr+R0;bBo zy}P;hwrL-l_CB35d|+#ckf~C%C8JrFx^kVqQJeY-gWiD@uf4s8E9a}E^OAz)QXW0Y zVL~X3=Ut8uOWFsVLC=$G*t}-X)Vadzx7Hx}kL62e-@a(>Y$OVQ*mI1(S|6i2VQ{8_ z`0MRKhBF$&yB*lPdwWH{nc|1!1~rOh}XZo{^DiR8lj-7X>ua!_Gb2A! zRM>Vrh^i{Y!YTu!esE(s63cdY;nkfiX@s({Lcx;ciXM3j>Srw>Qr>`OhEa8coTU;8 z2MLEGESOctXs)t#wYRZfc zReYK%c;>BPf~HDUOk>-z00U{wZ;}wuHEiQaDB6-YcO4-a$WRv-jAZ;2eG5r9pW_qjRuGd!I%3kj0$Yb1+T)KGtoy@azFt zyQSU;nKxW<@m!<_k$^(ckq7~rurbt+rubY>vY;u;392Z5w`t8p1zOhx(`!u{t8^;jIYEb$mAV7DL8*#9cA$_`CN(_wI-%6-ls1V7PQo{?EKjjTzwMAwksJ) zJB(%=x`&Hcwmij-TaKh)ODf8u0C$`n0E&9SXjalSWYaxt(OhlPIcQ^j(mqQH30c{@7BDnYQ<1{ulQ5FmM$_`jKyMbK?j?*{df`nQ1 z0j5`*G$ajL>H;)Y8N@;w9fKC>oJV7oaY~1Yl)hq4#x%+z8kLEYZFUo$sd-k>pk=%J z^9AdYL^R}U{0Yr{qN-b487En`nD0Gy0M$9px~1i`)CY-&G;&3kokue~@w-9hwan!F zd3B{`2`QnrDn_Ab6E$Na6$QC^6lP3!=nOqT| zH;ipl8@dReU0}iS+mKr3(n^E}g?^_U$ZS*)EEzkcd`u%NOR7 zvtV%4L78y7goN6p-x>PH`U!*pLsKZ)-f8dk4%^h0>jX`K>-r)Zt~NnJPk#yoPn}&p zK!~UI9`3q(*?G;Sc9;4Jz0@1jHDnPEC?vuH(3n7LEiExi>SWXlx(%fI|q+()nyA$@g-7e7a;@ zswfj>X^ClwNqGPP^rdV}Lr|YINJLbs;u>RF4;)i8(N=0$}e8Dc&0XYMjhQFE^`_Jc+xjh{VAKeq&_J;b{vnQWwZO;E_NU6VBzcr zu2|NBWuII?-u6i6{Gezw<5ILeswQmu*o3k>(I|bw>2h63p=h!DP&d2xwr5erui3oj z4$g3#c}{SB>t(p^H}!yVeK;JVHW{O;B1$M2plA!?VTGdQFrLXXG?FHj&XLaKX=$!u z-po466G2?})cU}{s7+NuM-k9DWRZ;NM1q3$KAYwm|9YV)=^q-Svu}jHp)rP2>5N^l z9z;`r!=}||d|2Y_vcel$Bfwt(e}dXw3FyU%+VEA)POvNQ)z#V|Y$M_79JHxlG`d(YAL4Xx+lc? Date: Wed, 2 Aug 2023 16:03:29 -0400 Subject: [PATCH 2/2] fix: avoid json intermediary for payload parsing Signed-off-by: Chris Gianelloni --- output/notify/notify.go | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/output/notify/notify.go b/output/notify/notify.go index 4e241dd..2ac54c5 100644 --- a/output/notify/notify.go +++ b/output/notify/notify.go @@ -15,7 +15,6 @@ package notify import ( - "encoding/json" "fmt" "github.com/blinklabs-io/snek/event" @@ -55,18 +54,8 @@ func (n *NotifyOutput) Start() error { panic(fmt.Errorf("ERROR: %v", payload)) } - data, err := json.Marshal(payload) - if err != nil { - panic(err) - } - - var be chainsync.BlockEvent - err = json.Unmarshal(data, &be) - if err != nil { - panic(err) - } - - err = beeep.Notify( + be := payload.(chainsync.BlockEvent) + err := beeep.Notify( "Snek", fmt.Sprintf("New Block!\nBlockNumber: %d, SlotNumber: %d\nHash: %s", be.BlockNumber,