From 71a9b2d3edc92f2d479321dc4e608a696755c875 Mon Sep 17 00:00:00 2001 From: Danny McCormick Date: Thu, 6 Jun 2019 14:16:48 -0400 Subject: [PATCH] Add tool-cache (#12) * Add tool-cache * Format * Fix linux bug * Update readme * Package zip/unzip * Reorganize * Format * unzip somehow got corrupted, fixing * Resolve remaining todos * Don't log everything * Pass error codes * linting * Branding and nits * Fix for mac * clean up windows/nix logic * Clean up tests * Export HTTPError * Add option for custom 7z tool * Lint/format * Dont wipe temp/tool directories --- packages/core/package.json | 1 - packages/exec/package.json | 1 - packages/io/package.json | 1 - packages/tool-cache/README.md | 7 + packages/tool-cache/__tests__/data/test.7z | Bin 0 -> 293 bytes packages/tool-cache/__tests__/externals/zip | Bin 0 -> 216256 bytes .../tool-cache/__tests__/tool-cache.test.ts | 338 +++++++++++++ packages/tool-cache/package-lock.json | 205 ++++++++ packages/tool-cache/package.json | 48 ++ packages/tool-cache/scripts/Invoke-7zdec.ps1 | 60 +++ .../tool-cache/scripts/externals/7zdec.exe | Bin 0 -> 42496 bytes packages/tool-cache/scripts/externals/unzip | Bin 0 -> 174216 bytes packages/tool-cache/src/tool-cache.ts | 473 ++++++++++++++++++ packages/tool-cache/tsconfig.json | 11 + 14 files changed, 1142 insertions(+), 3 deletions(-) create mode 100644 packages/tool-cache/README.md create mode 100644 packages/tool-cache/__tests__/data/test.7z create mode 100755 packages/tool-cache/__tests__/externals/zip create mode 100644 packages/tool-cache/__tests__/tool-cache.test.ts create mode 100644 packages/tool-cache/package-lock.json create mode 100644 packages/tool-cache/package.json create mode 100644 packages/tool-cache/scripts/Invoke-7zdec.ps1 create mode 100644 packages/tool-cache/scripts/externals/7zdec.exe create mode 100755 packages/tool-cache/scripts/externals/unzip create mode 100644 packages/tool-cache/src/tool-cache.ts create mode 100644 packages/tool-cache/tsconfig.json diff --git a/packages/core/package.json b/packages/core/package.json index df9eb6b7..b40509fa 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -6,7 +6,6 @@ "core", "actions" ], - "author": "Bryan MacFarlane ", "homepage": "https://github.com/actions/toolkit/tree/master/packages/core", "license": "MIT", "main": "lib/core.js", diff --git a/packages/exec/package.json b/packages/exec/package.json index afa85210..67dc4a1b 100644 --- a/packages/exec/package.json +++ b/packages/exec/package.json @@ -6,7 +6,6 @@ "exec", "actions" ], - "author": "Bryan MacFarlane ", "homepage": "https://github.com/actions/toolkit/tree/master/packages/exec", "license": "MIT", "main": "lib/exec.js", diff --git a/packages/io/package.json b/packages/io/package.json index ddf6a996..037e2213 100644 --- a/packages/io/package.json +++ b/packages/io/package.json @@ -6,7 +6,6 @@ "io", "actions" ], - "author": "Danny McCormick ", "homepage": "https://github.com/actions/toolkit/tree/master/packages/io", "license": "MIT", "main": "lib/io.js", diff --git a/packages/tool-cache/README.md b/packages/tool-cache/README.md new file mode 100644 index 00000000..5856b65f --- /dev/null +++ b/packages/tool-cache/README.md @@ -0,0 +1,7 @@ +# `@actions/tool-cache` + +> Functions necessary for downloading and caching tools. + +## Usage + +See [src/tool-cache.ts](src/tool-cache.ts). \ No newline at end of file diff --git a/packages/tool-cache/__tests__/data/test.7z b/packages/tool-cache/__tests__/data/test.7z new file mode 100644 index 0000000000000000000000000000000000000000..7f385fc73bece84236baaf0929430315594b7384 GIT binary patch literal 293 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≦n^p?L40#fdkJy>{cpWRyydRf?;~!1z9*A7DP(# zW_3P9e6RnOD~VIaJf25<=Yl~!#Qf6}en6%3s z5|=+)J(1Y5sq|08Z>_BCB)0CX9ZnqcLDdZ6-OG}?i2mHfr-@IV<~y4>^4xw`6Q8~O zsTYZzi{}rviGRGjevEhS+R^s1x4tkqdxH5hk@%c^uONpiD&U={n&(lh}iBof{ClTLWw&*{I zljpzwC~?p1w{{aN6ZeiI9=yEg65`B9JAX}l@!qH3Cw}j>$8(7v+gmb-LqB`w8RBiv zKlMjq#$B6c5+AyM^Dtt+G2KrQ@9O{dE5!3>yw@ey31h?PdeEO3>erypKYcO13Tpn>^!9<}3PaSnWT)UHSP&_hS+y&eNJOC^n5VrFJ z2oHqqRluj49sza&8UBS z!0o^;;2z)s;2~hr$zeMQJt-eJ7I*+y18g}J@qnEvK-5FaH<3?Z+PAM!gI}xqwOMqujh7 zjr4$x7l-X3u*i+$!ge`uXg1;jJFh}K^w665VY?7m{KK&Q0I&~6sPT*$X9$*)+_z}n*0=d6II{_Ov zqMm^VfStgk-y(h90}la@JPNs|g8n$t2X<~k{QwVaLH)skjNOX-1BX6=cH=#89dHk@ z6L|5=Nl0Pa;0B@hRjFnBN(;j{v(~K)ztvhQ5gOh~3B!@pa@IBVQvh zAGl{X%18VF^lu@5e?k2N8}}g}z#|_*Uw|9;BfZm6A0Hz<;@?m|z%JlA;Mo5{y#Q-~ zhk$$j8|58}{CpO+>w%5H4Zw}S?ZBkZkxyXFA>`u>r1J&Bi3zrSfEcvxLX6;zgKc{i za1U?;@Ca}-uqN5I<6+smfJ1>pPqOXN#8bfsOapEPHUhhVN#C&TBft$Qww)G&oNwB8 z3$XKa+ujHqJJh!KkPaMs7UZ0P^noqF8sHw_DqvE`ws(;ZJOVrbOv6Z8e3oq&0~^nV zJYd&3C6Z21q{UI!d|CFBxwP=Dt^&P3E7 zF&FtHPD1{HNs}Q5xMvFFq#~WENC((hfcV5h#6KT$u0ecYBXBhE0I(4Vl~-5XiWyd1 zLvq~dNdp3F;|3&?j%K$Oe{$5mK(nZSWAkJFA^gd!@LU8rgUJ(vDU$~$E(uJMfzrrhBl9}Km` zX9ZJN_sa@qtn804T&%aT;2(!^N7ZL`P*qbt=!Kvcfqpa79Un}-!6Mg^kkg_CS4?te?k)!r~5J!0}KEzt>&sOEG(#4n>3`}4} zjm6(C@CPssDu+h#yY(~??9)tw8=NX&QtG0P3_-rz5Wj*HlnPFhLM&{BZqoBX??pVAe@wVFojOns`hL)FLcZ9(tC|0m{z<`*?<(W~DWI9BC(h8h!SDRU zM(6kB#M#d8{6t@&bE9)K8X~tte!xCze}vx=@+U+7PaO8V#75QL5KlJ7JA!!I{+IEn z>!YC`4OZAb6Y<#|ee`4k^&~r3;6EGco`EJuLqnBxL+gA~-x?vOz!$dfh_07u!S3^X z2b_#+{&Mhd1b;jHm^UQdJE@;*sGoPlj}NA{P_I_^&kAO)9Kghjk$5Il7U_e(uay>ycr z2g$cDW&yLQ7|`~knsMS4;{=mY4(3=v5BFwlEIALyZv1-%<|m|f>0eTm|}J&@)M$==2ZhZy8kf1=QzD#;hqjwHf>Y_^Cf9zgz#g zuqxL&YNJZ4?E(Ge2J%yHz`xSxt4EVgN%VaQ$W5FUOt}huWrFG-KBS2|-C58^h%yW| zuLpkc`E0=Bw-fZvcVo=jpPV>7COtRN|2rz`)EJ72AkBb6QTFR zj-~f1XR*@p&5zYlkg^^JhYdh|!|#8d1YLi{sJID||B{A_^|cQ-c_)YMCK9~) zz23>MYDo6eA?WDq!B5>Y7wa*N2H=#iJt$faQIBGOT|LYWmiQ~EhiG??{neI{`D%o` zZ9~HLy-dXI$J3xH?)W!e>j~4}2>uMr3)jJZMf5{A{Yd){2Wn@`4yXMo$~yviO_*2C zWD;(_cI8EuXKkE6zF$m%sz75QA|LbFwU|c+Ii5k@9UPxp=%{ebyt zLHv^8VLJ?r$WQF?4f$EpKW2VZjZq%w*~uBOd(n2wEuULoxxvN$qwol0jF-9rC@&55 zRB}<+{we0yC(Pes|M=K;NV#bitfcY?(eKm zuG56>3fs3Z4Y$8zoOfN^yu=1=kWisC_{`q}h*yPpD28*U(!Ig?hb4J z9zS`pp18gg0DYPC`{Vd=^h>`HyI;6=aUJAk{xocV!UWuUnieeaHAhtr)5hO+<`?{D zOZt8E4gGv&f2jOK-`c+ZxEfZ~c#?$muHK)8?M2b)=3?ZTW2Pz8C$5vFt`FN-z7c(z z8KqB!65h*jxmZs%pdUm$tdqv>pRPSB436^^K%GGG3?F(}SLN=6y!M|%FOJ*Ka)a%u zoHkKVo334V`_V*{+m2ao@n@-@Tz_o)W!Nsj zZ*#Ffbb;Or`kN#|Z@7*S@?nBZ>m=hS;~xUw`qr?GBHpU!GOQyIOF_Sh}aH!4OkD(lYEKa z0sR%f18V7e)Z=$dfpNvfei@I6S~J#-gC2>U_%=ihKu>%4*pcEOBazCYutDH z?^URYCu8<6J&jTGtszj>%xz)YqQC3PbKA$2Hwk{zbN-msk(KD5NskJPAs!XWO7#8d z7*SOJ;(C6^j&RgECG~G3=-r@K9!vj}UqKUfu&?@w{h%D~3mkqqY&VEK>N8#_IZzt^ zJPcJ{yQvKc<&4DwSVmXa{_Sz|Lpft&$Z^NJRgkm(75HtC88O~*+}W&qKkS#-AKHt} z;4gYLZ2zM#|6^YMVc^*Z{?yl`KHc#Y#?cwp)OuJF7A7*lw}5h$9a8Iz6S&SOUWqb8 za5H3zmzzlW*@#zl0{PTa?$|B{-(s$z9$&Af(%*#{!z4=|? z?!^@taE3;k8}=1%WAo@;NY%+I45`uYKS8ln3?v1FKy`cXix*lD-9N8`<{_A7=*?EcnhS(uyzA*&*jt&2SpBj-q^OXkr zV$df<(9`fc8}v5NS5u$ee#JG#kF@Gf=4zvgMgDs52mbl>_=~~+0Qjp8hwba7zsUFw zXV%?ML4RW%!(gFdV5P=$+aQXPljz&(A;FXkh5UHzn^t`pwx6JU2vI#mZ>Om7co@P1 zU&(rqTfWJ`wQ)WuCHpoEv>srX-$L*gf&Vf5j_5zJ{0a8&1u^wHD{)S&Zoqcf4EY_9 z4|C>Rq;ns58|ZT#s@Ai8pr;&()+g%o5zq@jA9*ah;g0j!80UA#)*4-I+ShzkW=2^0 zpIc8;p$9Oqx|US?gRdEU*D#+h-^Acz_8no281Ehce+T$0qWO_0-z+ab%e4#qhru6; zwy$pe=Q;Zd^pCOC62sm|`ePw)81}_?*kOCT$di7L@mcl-b-({qYnRjS)l7}~DM$Ps z3;VqBxH?|mPrPkk0dW!ahx{yx8prm4uNQpNg>R*AaxmlOsOgNd zYw_6E5A?(S_=)wPAlMt{A01l})Idu+#q$Gs18n=yvFbn4PL1>59$Q>)Vm9ib?*v7U z=WLfwq|+O)?OsWz&w67nry^}=7MO|%%fRYje>sBqO*r=uIgcZK2+k`sfSyW5xkyg~ zeJ$w5_hu03*`POrp2&R2MS3ylO^LRBIcZl1lS^eBsRz9c^m~p~->!a6$9(wKnCc+< zIU1t3L*C&*wmpmKtNx_c={R|XBP{(XFA)=A`3*zQ{PA2yXs{h+=d(c{5`w(|eJ=A? z%=Lg=XP+^T`;4mnW^

{{u8$U;keF5yg-*4(CHUSi!OM-qi!xLI0}QdXTRM4(4|w z+mGV6xtQPWA?O>Z&Dm#YguIMzL;vEKpuU)ob)cu7Y1?0s#C5&f zkPlhEr~!#5$^$t6@&)6eUi;|%B`tlhew>alJ<$g*IjV2uCHk(79yO_7 zJn69>=WIIg+p2KpFM-Y#e@)_gBW_&B+57ThM7e1qmI5H#g6xL4vgdBWQ~_lME|mnZRxgg#5|+vL7SFtt&~YY^Nan4%5^!u|>xx$EVAhhWMrI)0U);k!Z7 z>kxY2dz!CEaIIjEpo!Ng@j^|Sf3aY@V6ULzZxR0c1OwmK@d^YR1h)z97tHv9<}-4h zlK2fm-yzs7^puq%S8%;xub`2$Tlh0pY5o$yR>5w;lv{OpmEc-IBj-br(=GIncq}Ho zNbc7P_6lbFP|Ix)+##6Utm&D8Rf0xdhurrH27aXZ3j{xt{H&MzUO`*vscKOV>qLUB zg8KziZ=g6jo)1dZIlk2PPB;4n$YgkK@|>m|HbFykjWUW4Ec!Q{I{o?x5cLBY&* zI=o5Hq%%d*=@xp*-I{Nlpy4YNzGk8K2!?*D`Ktum1P=?E_>~er^JkI|!5xCh>ovVd zuvM@}(E7O!&k!sTH1d~;{C1%qHvIo7=?QiS27aOG1%j=DM&5q84{XqUd4g*Ndjv!G z=x`ISS@KaO^mf6+f|>V9egt<2n)vG^e)2ChUy)#|pyBJ0`%tUqs}j7&)Pvmb7fiiR z^OXp;2_6(Qax;FV`5FYb2|g}z_se~k+&l5^mw1BP1OpFfdY<6N5^t^C_Xvg_)O=Nf zMsBm*_ju@^i=4niI$nX`dckhNl!tY=kyj-5t%3&y$F*s`X2EX3(61$5f*pc^M5VIJVBGb@fW?AHbv4G{vN^9jgr1#yP)-3Nnfy4@StGEqdL4vaGPNA?=-zc zuubrwU}n3-6Z9A9`&aj9G*dV)J}CuC5?p_?{(&Po>e@G1$H&sXx~k69emIt9)n(S2 zumrBI#S+eS0$wH@%kQRqzH6-^H5E zY83h}1b^t^8zX!_5&C0-_jvd&5xzE||3Pq*hc8q3o)!9gf-igcE)~9ALf=4ZL`LH zr_di1Z1eE-myA9k^qqoldiVwi-wyEyK9KOgdiYKfzJtPdSi-*&lwj**`4M_d*IWE- zjROQ(MzWkDd1;gzpTwmtc$gXuNtv z-Vchkyx|_cVW!+m!QA1P>p)!B2%OBKGc5`JZbJo26;5he@0Qn1>?caHECiM%=q zZ;aq${<$y4t6u2e*sb%q%EPx%vsq0d??)2u)tBLtZi|H9Ex6tz?_A+)6M1W;9qt!C z3AWT(dZgVWd>bYFcOH4?nFw2S{x6sQ{e*{4O>!VFRrp?z@D~M*7@3Ax1;Tg3)mm;) z+F7c@S}Z?am-x4dzww?&UV-p6iM(pjs}F_G$h$#)7<#|I=yVTw`09l3Uqb&v?9dQT z{$>bYyQDi@!c#qbsZ#KCq5oYbM)`7Y>Sc+@>k)agBz(3<-e`#s*sAkiDdE)~zDtBJ zQ}~ui_zDl-`NCHse78z?vxhH3`1Z?qf479M_wZdPeD@3eQNhO|_{cI!_?ji%OQbzI zBluV)7YX0XLVrtecLX0nHtphDY8~kyj*qA4&eN z_3&LSd`-evDdC@c$~#WV(Jp)+=j(jdM${igsWY6w9wYBv%~$P7H%sIl7QP!Kyxzk% z!PH-emUHt58dnOR8Mhjw9C^amTA=xEkB~=EMZ#Ald=E+g{aFMbS(Xc5tI*q|p0{}T zRtVpVLVr(iub^b#nk{^v3H@BDzkc7<`IKO5ocvfX`7`wYEpC(eW}G-I_jyn1^bCEm z+;0<1eoBXz2(}AaPiuOf;7O8iBWJD9dj&H(HGhMk;p>ol>lu+JXu{XZeUIP;o^(>5 z6}f^t1XG^V^eVv)!N4|6FA_BAG|7FpVCeUnZ?WJu!NBtpU$9m1py0R{ba=C1k6`L{ zO>Yo1>9)(g^`Z_h5cIZhmXy0e!aD>H3ue9~@&(%kjhusWpYjLIS0rfi(I)qYJ@m{S zn!ooJt-1V{e^}SEjcnrZ$eS4VKHqg?_t-|7UW)L6GN-cx{sV4iCLs?%x#D+<2x$?mreZ`SD9W1_~Pa=g9r} z9{NPN&lfauOuZX4^@DEu2``f$gC<`F znYYM4lTU*tzXtmxIAC}bscHN<&OIM5IZ?f}Ch7RCBBwVZKKB#`JJMqRXdR^EhXNW) zCg}9zP~dOl&%_^e7odGD z5!K~ZI`8n!n<^{4eEFg!%NJ^_uhSv&ak{9RIS8w(s3~OxCRAN-r7y10|D?~W#gBTt zmD)P9;9kSuv-o9P!Pajz6cgt`47;Q!&i%`DI{ZRHg+fDqp1w ztIIUiN}s!AiOSX-RR=ZIi_BCzcEx{9Ds`8-M}6a!DL)LFeJ&lUdChO4(IFGRP<|K; zMKa?z^)~W43pdn36Te=57#tSKjNjh)T<84)dr>C-dii0H?+)T6;Oy6FD&Dt?AFKlt zf17j&gCW@%q%B}Q(FX7``*aiWoBh+o?+xJwmqD|?r>TAGZyEw%3Z49${WXIrBG}~L zq+{?p#OL0fxi|ZF2F?81n}3rZuK%!3O?O`kGh8}I z{p)Q%`rVQ7+hu>&U~)uU{xtUnzvqd+P2w92v2h|UlYc{M#*fJKdz*BKLEj%4>Ru*Y zLs^3#k@3xbvO%*CYxuq8UnlWR{adpBVes=d6H{X-`qtWjd!}#VANpMXGFWUHPU3mf zf5a2N;7c9f;MidjQNUY&n?Voa&s4M7Kd(AdQ@s4<-rzRG{L(+(2T=D-`exsH$9FWPo5FFK{$a{( z^k^l*BGWhf`|Hzm{1PKrNpbCuk@Jx!z9sv3R)&t)JVYW2graY)PjF9JCYjdka}-B& twx;aZAFVMV73%);8GcF;T_S#&_@kq!eR(6x9?9A%>C;b$ygawo{{WX`^BVvF literal 0 HcmV?d00001 diff --git a/packages/tool-cache/__tests__/tool-cache.test.ts b/packages/tool-cache/__tests__/tool-cache.test.ts new file mode 100644 index 00000000..cc8abc79 --- /dev/null +++ b/packages/tool-cache/__tests__/tool-cache.test.ts @@ -0,0 +1,338 @@ +import * as fs from 'fs' +import * as nock from 'nock' +import * as path from 'path' +import * as io from '@actions/io' +import * as exec from '@actions/exec' + +const cachePath = path.join(__dirname, 'CACHE') +const tempPath = path.join(__dirname, 'TEMP') +// Set temp and tool directories before importing (used to set global state) +process.env['RUNNER_TEMPDIRECTORY'] = tempPath +process.env['RUNNER_TOOLSDIRECTORY'] = cachePath + +// eslint-disable-next-line import/first +import * as tc from '../src/tool-cache' + +const IS_WINDOWS = process.platform === 'win32' + +describe('@actions/tool-cache', function() { + beforeAll(function() { + nock('http://example.com') + .persist() + .get('/bytes/35') + .reply(200, { + username: 'abc', + password: 'def' + }) + }) + + beforeEach(async function() { + await io.rmRF(cachePath) + await io.rmRF(tempPath) + await io.mkdirP(cachePath) + await io.mkdirP(tempPath) + }) + + afterAll(async function() { + await io.rmRF(tempPath) + await io.rmRF(cachePath) + }) + + it('downloads a 35 byte file', async () => { + const downPath: string = await tc.downloadTool( + 'http://example.com/bytes/35' + ) + + expect(fs.existsSync(downPath)).toBeTruthy() + expect(fs.statSync(downPath).size).toBe(35) + }) + + it('downloads a 35 byte file after a redirect', async () => { + nock('http://example.com') + .get('/redirect-to') + .reply(303, undefined, { + location: 'http://example.com/bytes/35' + }) + + const downPath: string = await tc.downloadTool( + 'http://example.com/redirect-to' + ) + + expect(fs.existsSync(downPath)).toBeTruthy() + expect(fs.statSync(downPath).size).toBe(35) + }) + + it('has status code in exception dictionary for HTTP error code responses', async () => { + nock('http://example.com') + .get('/bytes/bad') + .reply(400, { + username: 'bad', + password: 'file' + }) + + expect.assertions(2) + + try { + const errorCodeUrl = 'http://example.com/bytes/bad' + await tc.downloadTool(errorCodeUrl) + } catch (err) { + expect(err.toString()).toContain('Unexpected HTTP response: 400') + expect(err['httpStatusCode']).toBe(400) + } + }) + + it('works with redirect code 302', async function() { + nock('http://example.com') + .get('/redirect-to') + .reply(302, undefined, { + location: 'http://example.com/bytes/35' + }) + + const downPath: string = await tc.downloadTool( + 'http://example.com/redirect-to' + ) + + expect(fs.existsSync(downPath)).toBeTruthy() + expect(fs.statSync(downPath).size).toBe(35) + }) + + it('installs a binary tool and finds it', async () => { + const downPath: string = await tc.downloadTool( + 'http://example.com/bytes/35' + ) + + expect(fs.existsSync(downPath)).toBeTruthy() + + await tc.cacheFile(downPath, 'foo', 'foo', '1.1.0') + + const toolPath: string = tc.find('foo', '1.1.0') + expect(fs.existsSync(toolPath)).toBeTruthy() + expect(fs.existsSync(`${toolPath}.complete`)).toBeTruthy() + + const binaryPath: string = path.join(toolPath, 'foo') + expect(fs.existsSync(binaryPath)).toBeTruthy() + }) + + if (IS_WINDOWS) { + it('installs a 7z and finds it', async () => { + const tempDir = path.join(__dirname, 'test-install-7z') + try { + await io.mkdirP(tempDir) + + // copy the 7z file to the test dir + const _7zFile: string = path.join(tempDir, 'test.7z') + await io.cp(path.join(__dirname, 'data', 'test.7z'), _7zFile) + + // extract/cache + const extPath: string = await tc.extract7z(_7zFile) + await tc.cacheDir(extPath, 'my-7z-contents', '1.1.0') + const toolPath: string = tc.find('my-7z-contents', '1.1.0') + + expect(fs.existsSync(toolPath)).toBeTruthy() + expect(fs.existsSync(`${toolPath}.complete`)).toBeTruthy() + expect(fs.existsSync(path.join(toolPath, 'file.txt'))).toBeTruthy() + expect( + fs.existsSync(path.join(toolPath, 'file-with-ç-character.txt')) + ).toBeTruthy() + expect( + fs.existsSync(path.join(toolPath, 'folder', 'nested-file.txt')) + ).toBeTruthy() + } finally { + await io.rmRF(tempDir) + } + }) + + it('extract 7z using custom 7z tool', async function() { + const tempDir = path.join( + __dirname, + 'test-extract-7z-using-custom-7z-tool' + ) + try { + await io.mkdirP(tempDir) + // create mock7zr.cmd + const mock7zrPath: string = path.join(tempDir, 'mock7zr.cmd') + fs.writeFileSync( + mock7zrPath, + [ + 'echo %* > "%~dp0mock7zr-args.txt"', + `"${path.join( + __dirname, + '..', + 'scripts', + 'externals', + '7zdec.exe' + )}" x %5` + ].join('\r\n') + ) + + // copy the 7z file to the test dir + const _7zFile: string = path.join(tempDir, 'test.7z') + await io.cp(path.join(__dirname, 'data', 'test.7z'), _7zFile) + + // extract + const extPath: string = await tc.extract7z( + _7zFile, + undefined, + mock7zrPath + ) + + expect(fs.existsSync(extPath)).toBeTruthy() + expect( + fs.existsSync(path.join(tempDir, 'mock7zr-args.txt')) + ).toBeTruthy() + expect( + fs + .readFileSync(path.join(tempDir, 'mock7zr-args.txt')) + .toString() + .trim() + ).toBe(`x -bb1 -bd -sccUTF-8 ${_7zFile}`) + expect(fs.existsSync(path.join(extPath, 'file.txt'))).toBeTruthy() + expect( + fs.existsSync(path.join(extPath, 'file-with-ç-character.txt')) + ).toBeTruthy() + expect( + fs.existsSync(path.join(extPath, 'folder', 'nested-file.txt')) + ).toBeTruthy() + } finally { + await io.rmRF(tempDir) + } + }) + } + + it('installs a zip and finds it', async () => { + const tempDir = path.join(__dirname, 'test-install-zip') + try { + await io.mkdirP(tempDir) + + // stage the layout for a zip file: + // file.txt + // folder/nested-file.txt + const stagingDir = path.join(tempDir, 'zip-staging') + await io.mkdirP(path.join(stagingDir, 'folder')) + fs.writeFileSync(path.join(stagingDir, 'file.txt'), '') + fs.writeFileSync(path.join(stagingDir, 'folder', 'nested-file.txt'), '') + + // create the zip + const zipFile = path.join(tempDir, 'test.zip') + await io.rmRF(zipFile) + if (IS_WINDOWS) { + const escapedStagingPath = stagingDir.replace(/'/g, "''") // double-up single quotes + const escapedZipFile = zipFile.replace(/'/g, "''") + const powershellPath = await io.which('powershell', true) + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + `$ErrorActionPreference = 'Stop' ; Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::CreateFromDirectory('${escapedStagingPath}', '${escapedZipFile}')` + ] + await exec.exec(`"${powershellPath}"`, args) + } else { + const zipPath: string = path.join(__dirname, 'externals', 'zip') + await exec.exec(`"${zipPath}`, [zipFile, '-r', '.'], {cwd: stagingDir}) + } + + const extPath: string = await tc.extractZip(zipFile) + await tc.cacheDir(extPath, 'foo', '1.1.0') + const toolPath: string = tc.find('foo', '1.1.0') + + expect(fs.existsSync(toolPath)).toBeTruthy() + expect(fs.existsSync(`${toolPath}.complete`)).toBeTruthy() + expect(fs.existsSync(path.join(toolPath, 'file.txt'))).toBeTruthy() + expect( + fs.existsSync(path.join(toolPath, 'folder', 'nested-file.txt')) + ).toBeTruthy() + } finally { + await io.rmRF(tempDir) + } + }) + + it('installs a zip and extracts it to specified directory', async function() { + const tempDir = path.join(__dirname, 'test-install-zip') + try { + await io.mkdirP(tempDir) + + // stage the layout for a zip file: + // file.txt + // folder/nested-file.txt + const stagingDir = path.join(tempDir, 'zip-staging') + await io.mkdirP(path.join(stagingDir, 'folder')) + fs.writeFileSync(path.join(stagingDir, 'file.txt'), '') + fs.writeFileSync(path.join(stagingDir, 'folder', 'nested-file.txt'), '') + + // create the zip + const zipFile = path.join(tempDir, 'test.zip') + await io.rmRF(zipFile) + if (IS_WINDOWS) { + const escapedStagingPath = stagingDir.replace(/'/g, "''") // double-up single quotes + const escapedZipFile = zipFile.replace(/'/g, "''") + const powershellPath = await io.which('powershell', true) + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + `$ErrorActionPreference = 'Stop' ; Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::CreateFromDirectory('${escapedStagingPath}', '${escapedZipFile}')` + ] + await exec.exec(`"${powershellPath}"`, args) + } else { + const zipPath = path.join(__dirname, 'externals', 'zip') + await exec.exec(zipPath, [zipFile, '-r', '.'], {cwd: stagingDir}) + } + + const destDir = path.join(__dirname, 'unzip-dest') + await io.rmRF(destDir) + await io.mkdirP(destDir) + try { + const extPath: string = await tc.extractZip(zipFile, destDir) + await tc.cacheDir(extPath, 'foo', '1.1.0') + const toolPath: string = tc.find('foo', '1.1.0') + expect(fs.existsSync(toolPath)).toBeTruthy() + expect(fs.existsSync(`${toolPath}.complete`)).toBeTruthy() + expect(fs.existsSync(path.join(toolPath, 'file.txt'))).toBeTruthy() + expect( + fs.existsSync(path.join(toolPath, 'folder', 'nested-file.txt')) + ).toBeTruthy() + } finally { + await io.rmRF(destDir) + } + } finally { + await io.rmRF(tempDir) + } + }) + + it('works with a 502 temporary failure', async function() { + nock('http://example.com') + .get('/temp502') + .twice() + .reply(502, undefined) + nock('http://example.com') + .get('/temp502') + .reply(200, undefined) + + const statusCodeUrl = 'http://example.com/temp502' + await tc.downloadTool(statusCodeUrl) + }) + + it("doesn't retry 502s more than 3 times", async function() { + nock('http://example.com') + .get('/perm502') + .times(3) + .reply(502, undefined) + + expect.assertions(1) + + try { + const statusCodeUrl = 'http://example.com/perm502' + await tc.downloadTool(statusCodeUrl) + } catch (err) { + expect(err.toString()).toContain('502') + } + }) +}) diff --git a/packages/tool-cache/package-lock.json b/packages/tool-cache/package-lock.json new file mode 100644 index 00000000..7ce81662 --- /dev/null +++ b/packages/tool-cache/package-lock.json @@ -0,0 +1,205 @@ +{ + "name": "@actions/tool-cache", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/nock": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/nock/-/nock-10.0.3.tgz", + "integrity": "sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.2.tgz", + "integrity": "sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==", + "dev": true + }, + "@types/semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-OO0srjOGH99a4LUN2its3+r6CBYcplhJ466yLqs+zvAWgphCpS8hYZEZ797tRDP/QKcqTdb/YCN6ifASoAWkrQ==", + "dev": true + }, + "@types/uuid": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", + "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "nock": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/nock/-/nock-10.0.6.tgz", + "integrity": "sha512-b47OWj1qf/LqSQYnmokNWM8D88KvUl2y7jT0567NB3ZBAZFz2bWp2PC81Xn7u8F2/vJxzkzNZybnemeFa7AZ2w==", + "dev": true, + "requires": { + "chai": "^4.1.2", + "debug": "^4.1.0", + "deep-equal": "^1.0.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.5", + "mkdirp": "^0.5.0", + "propagate": "^1.0.0", + "qs": "^6.5.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "propagate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz", + "integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "semver": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.0.tgz", + "integrity": "sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ==" + }, + "tunnel": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", + "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=" + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "typed-rest-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.4.0.tgz", + "integrity": "sha512-f+3+X13CIpkv0WvFERkXq4aH5BYzyeYclf8t+X7oa/YaE80EjYW12kphY0aEQBaL9RzChP0MSbsVhB4X+bzyDw==", + "requires": { + "tunnel": "0.0.4", + "underscore": "1.8.3" + } + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + } + } +} diff --git a/packages/tool-cache/package.json b/packages/tool-cache/package.json new file mode 100644 index 00000000..967fa063 --- /dev/null +++ b/packages/tool-cache/package.json @@ -0,0 +1,48 @@ +{ + "name": "@actions/tool-cache", + "version": "1.0.0", + "description": "Actions tool-cache lib", + "keywords": [ + "exec", + "actions" + ], + "homepage": "https://github.com/actions/toolkit/tree/master/packages/exec", + "license": "MIT", + "main": "lib/tool-cache.js", + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib", + "scripts" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/actions/toolkit.git" + }, + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1", + "tsc": "tsc" + }, + "bugs": { + "url": "https://github.com/actions/toolkit/issues" + }, + "dependencies": { + "semver": "^6.1.0", + "typed-rest-client": "^1.4.0", + "uuid": "^3.3.2", + "@actions/core": "^0.1.0", + "@actions/io": "^1.0.0", + "@actions/exec": "^1.0.0" + }, + "devDependencies": { + "nock": "^10.0.6", + "@types/nock": "^10.0.3", + "@types/semver": "^6.0.0", + "@types/uuid": "^3.4.4" + } +} diff --git a/packages/tool-cache/scripts/Invoke-7zdec.ps1 b/packages/tool-cache/scripts/Invoke-7zdec.ps1 new file mode 100644 index 00000000..8b39bb4d --- /dev/null +++ b/packages/tool-cache/scripts/Invoke-7zdec.ps1 @@ -0,0 +1,60 @@ +[CmdletBinding()] +param( + [Parameter(Mandatory = $true)] + [string]$Source, + + [Parameter(Mandatory = $true)] + [string]$Target) + +# This script translates the output from 7zdec into UTF8. Node has limited +# built-in support for encodings. +# +# 7zdec uses the system default code page. The system default code page varies +# depending on the locale configuration. On an en-US box, the system default code +# page is Windows-1252. +# +# Note, on a typical en-US box, testing with the 'ç' character is a good way to +# determine whether data is passed correctly between processes. This is because +# the 'ç' character has a different code point across each of the common encodings +# on a typical en-US box, i.e. +# 1) the default console-output code page (IBM437) +# 2) the system default code page (i.e. CP_ACP) (Windows-1252) +# 3) UTF8 + +$ErrorActionPreference = 'Stop' + +# Redefine the wrapper over STDOUT to use UTF8. Node expects UTF8 by default. +$stdout = [System.Console]::OpenStandardOutput() +$utf8 = New-Object System.Text.UTF8Encoding($false) # do not emit BOM +$writer = New-Object System.IO.StreamWriter($stdout, $utf8) +[System.Console]::SetOut($writer) + +# All subsequent output must be written using [System.Console]::WriteLine(). In +# PowerShell 4, Write-Host and Out-Default do not consider the updated stream writer. + +Set-Location -LiteralPath $Target + +# Print the ##command. +$_7zdec = Join-Path -Path "$PSScriptRoot" -ChildPath "externals/7zdec.exe" +[System.Console]::WriteLine("##[command]$_7zdec x `"$Source`"") + +# The $OutputEncoding variable instructs PowerShell how to interpret the output +# from the external command. +$OutputEncoding = [System.Text.Encoding]::Default + +# Note, the output from 7zdec.exe needs to be iterated over. Otherwise PowerShell.exe +# will launch the external command in such a way that it inherits the streams. +& $_7zdec x $Source 2>&1 | + ForEach-Object { + if ($_ -is [System.Management.Automation.ErrorRecord]) { + [System.Console]::WriteLine($_.Exception.Message) + } + else { + [System.Console]::WriteLine($_) + } + } +[System.Console]::WriteLine("##[debug]7zdec.exe exit code '$LASTEXITCODE'") +[System.Console]::Out.Flush() +if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE +} \ No newline at end of file diff --git a/packages/tool-cache/scripts/externals/7zdec.exe b/packages/tool-cache/scripts/externals/7zdec.exe new file mode 100644 index 0000000000000000000000000000000000000000..1106aa0e4414c31f73e779ae7f2ee28084909006 GIT binary patch literal 42496 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 MGWhiRKc>LH0L->Eu>b%7 literal 0 HcmV?d00001 diff --git a/packages/tool-cache/scripts/externals/unzip b/packages/tool-cache/scripts/externals/unzip new file mode 100755 index 0000000000000000000000000000000000000000..40824180954830c745c837044f339897f12dcab0 GIT binary patch literal 174216 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 VUgdd9+MdYxE~`IPR-o)Q_#X!!hD-ne literal 0 HcmV?d00001 diff --git a/packages/tool-cache/src/tool-cache.ts b/packages/tool-cache/src/tool-cache.ts new file mode 100644 index 00000000..21059e67 --- /dev/null +++ b/packages/tool-cache/src/tool-cache.ts @@ -0,0 +1,473 @@ +import * as core from '@actions/core' +import * as io from '@actions/io' +import * as fs from 'fs' +import * as os from 'os' +import * as path from 'path' +import * as httpm from 'typed-rest-client/HttpClient' +import * as semver from 'semver' +import * as uuidV4 from 'uuid/v4' +import {exec} from '@actions/exec/lib/exec' +import {ExecOptions} from '@actions/exec/lib/interfaces' +import {ok} from 'assert' + +export class HTTPError extends Error { + constructor(readonly httpStatusCode: number | undefined) { + super(`Unexpected HTTP response: ${httpStatusCode}`) + Object.setPrototypeOf(this, new.target.prototype) + } +} + +const IS_WINDOWS = process.platform === 'win32' +const userAgent = 'actions/tool-cache' + +// On load grab temp directory and cache directory and remove them from env (currently don't want to expose this) +let tempDirectory: string = process.env['RUNNER_TEMPDIRECTORY'] || '' +let cacheRoot: string = process.env['RUNNER_TOOLSDIRECTORY'] || '' +// If directories not found, place them in common temp locations +if (!tempDirectory || !cacheRoot) { + let baseLocation: string + if (IS_WINDOWS) { + // On windows use the USERPROFILE env variable + baseLocation = process.env['USERPROFILE'] || 'C:\\' + } else { + if (process.platform === 'darwin') { + baseLocation = '/Users' + } else { + baseLocation = '/home' + } + } + if (!tempDirectory) { + tempDirectory = path.join(baseLocation, 'actions', 'temp') + } + if (!cacheRoot) { + cacheRoot = path.join(baseLocation, 'actions', 'cache') + } +} + +/** + * Download a tool from an url and stream it into a file + * + * @param url url of tool to download + * @returns path to downloaded tool + */ +export async function downloadTool(url: string): Promise { + // Wrap in a promise so that we can resolve from within stream callbacks + return new Promise(async (resolve, reject) => { + try { + const http = new httpm.HttpClient(userAgent, [], { + allowRetries: true, + maxRetries: 3 + }) + const destPath = path.join(tempDirectory, uuidV4()) + + await io.mkdirP(tempDirectory) + core.debug(`Downloading ${url}`) + core.debug(`Downloading ${destPath}`) + + if (fs.existsSync(destPath)) { + throw new Error(`Destination file path ${destPath} already exists`) + } + + const response: httpm.HttpClientResponse = await http.get(url) + + if (response.message.statusCode !== 200) { + const err = new HTTPError(response.message.statusCode) + core.debug( + `Failed to download from "${url}". Code(${ + response.message.statusCode + }) Message(${response.message.statusMessage})` + ) + throw err + } + + const file: NodeJS.WritableStream = fs.createWriteStream(destPath) + file.on('open', async () => { + try { + const stream = response.message.pipe(file) + stream.on('close', () => { + core.debug('download complete') + resolve(destPath) + }) + } catch (err) { + core.debug( + `Failed to download from "${url}". Code(${ + response.message.statusCode + }) Message(${response.message.statusMessage})` + ) + reject(err) + } + }) + file.on('error', err => { + file.end() + reject(err) + }) + } catch (err) { + reject(err) + } + }) +} + +/** + * Extract a .7z file + * + * @param file path to the .7z file + * @param dest destination directory. Optional. + * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this + * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will + * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is + * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line + * interface, it is smaller than the full command line interface, and it does support long paths. At the + * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. + * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path + * to 7zr.exe can be pass to this function. + * @returns path to the destination directory + */ +export async function extract7z( + file: string, + dest?: string, + _7zPath?: string +): Promise { + ok(IS_WINDOWS, 'extract7z() not supported on current OS') + ok(file, 'parameter "file" is required') + + dest = dest || (await _createExtractFolder(dest)) + + const originalCwd = process.cwd() + process.chdir(dest) + if (_7zPath) { + try { + const args: string[] = [ + 'x', // eXtract files with full paths + '-bb1', // -bb[0-3] : set output log level + '-bd', // disable progress indicator + '-sccUTF-8', // set charset for for console input/output + file + ] + const options: ExecOptions = { + silent: true + } + await exec(`"${_7zPath}"`, args, options) + } finally { + process.chdir(originalCwd) + } + } else { + const escapedScript = path + .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1') + .replace(/'/g, "''") + .replace(/"|\n|\r/g, '') // double-up single quotes, remove double quotes and newlines + const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, '') + const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '') + const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'` + const args: string[] = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + command + ] + const options: ExecOptions = { + silent: true + } + try { + const powershellPath: string = await io.which('powershell', true) + await exec(`"${powershellPath}"`, args, options) + } finally { + process.chdir(originalCwd) + } + } + + return dest +} + +/** + * Extract a tar + * + * @param file path to the tar + * @param dest destination directory. Optional. + * @returns path to the destination directory + */ +export async function extractTar(file: string, dest?: string): Promise { + if (!file) { + throw new Error("parameter 'file' is required") + } + + dest = dest || (await _createExtractFolder(dest)) + const tarPath: string = await io.which('tar', true) + await exec(`"${tarPath}"`, ['xzC', dest, '-f', file]) + + return dest +} + +/** + * Extract a zip + * + * @param file path to the zip + * @param dest destination directory. Optional. + * @returns path to the destination directory + */ +export async function extractZip(file: string, dest?: string): Promise { + if (!file) { + throw new Error("parameter 'file' is required") + } + + dest = dest || (await _createExtractFolder(dest)) + + if (IS_WINDOWS) { + await extractZipWin(file, dest) + } else { + await extractZipNix(file, dest) + } + + return dest +} + +async function extractZipWin(file: string, dest: string): Promise { + // build the powershell command + const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, '') // double-up single quotes, remove double quotes and newlines + const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '') + const command = `$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}')` + + // run powershell + const powershellPath = await io.which('powershell') + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + command + ] + await exec(`"${powershellPath}"`, args) +} + +async function extractZipNix(file: string, dest: string): Promise { + const unzipPath = path.join(__dirname, '..', 'scripts', 'externals', 'unzip') + await exec(`"${unzipPath}"`, [file], {cwd: dest}) +} + +/** + * Caches a directory and installs it into the tool cacheDir + * + * @param sourceDir the directory to cache into tools + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +export async function cacheDir( + sourceDir: string, + tool: string, + version: string, + arch?: string +): Promise { + version = semver.clean(version) || version + arch = arch || os.arch() + core.debug(`Caching tool ${tool} ${version} ${arch}`) + + core.debug(`source dir: ${sourceDir}`) + if (!fs.statSync(sourceDir).isDirectory()) { + throw new Error('sourceDir is not a directory') + } + + // Create the tool dir + const destPath: string = await _createToolPath(tool, version, arch) + // copy each child item. do not move. move can fail on Windows + // due to anti-virus software having an open handle on a file. + for (const itemName of fs.readdirSync(sourceDir)) { + const s = path.join(sourceDir, itemName) + await io.cp(s, destPath, {recursive: true}) + } + + // write .complete + _completeToolPath(tool, version, arch) + + return destPath +} + +/** + * Caches a downloaded file (GUID) and installs it + * into the tool cache with a given targetName + * + * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. + * @param targetFile the name of the file name in the tools directory + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +export async function cacheFile( + sourceFile: string, + targetFile: string, + tool: string, + version: string, + arch?: string +): Promise { + version = semver.clean(version) || version + arch = arch || os.arch() + core.debug(`Caching tool ${tool} ${version} ${arch}`) + + core.debug(`source file: ${sourceFile}`) + if (!fs.statSync(sourceFile).isFile()) { + throw new Error('sourceFile is not a file') + } + + // create the tool dir + const destFolder: string = await _createToolPath(tool, version, arch) + + // copy instead of move. move can fail on Windows due to + // anti-virus software having an open handle on a file. + const destPath: string = path.join(destFolder, targetFile) + core.debug(`destination file ${destPath}`) + await io.cp(sourceFile, destPath) + + // write .complete + _completeToolPath(tool, version, arch) + + return destFolder +} + +/** + * finds the path to a tool in the local installed tool cache + * + * @param toolName name of the tool + * @param versionSpec version of the tool + * @param arch optional arch. defaults to arch of computer + */ +export function find( + toolName: string, + versionSpec: string, + arch?: string +): string { + if (!toolName) { + throw new Error('toolName parameter is required') + } + + if (!versionSpec) { + throw new Error('versionSpec parameter is required') + } + + arch = arch || os.arch() + + // attempt to resolve an explicit version + if (!_isExplicitVersion(versionSpec)) { + const localVersions: string[] = _findLocalToolVersions(toolName, arch) + const match = _evaluateVersions(localVersions, versionSpec) + versionSpec = match + } + + // check for the explicit version in the cache + let toolPath = '' + if (versionSpec) { + versionSpec = semver.clean(versionSpec) || '' + const cachePath = path.join(cacheRoot, toolName, versionSpec, arch) + core.debug(`checking cache: ${cachePath}`) + if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) { + core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`) + toolPath = cachePath + } else { + core.debug('not found') + } + } + return toolPath +} + +async function _createExtractFolder(dest?: string): Promise { + if (!dest) { + // create a temp dir + dest = path.join(tempDirectory, uuidV4()) + } + await io.mkdirP(dest) + return dest +} + +async function _createToolPath( + tool: string, + version: string, + arch?: string +): Promise { + const folderPath = path.join( + cacheRoot, + tool, + semver.clean(version) || version, + arch || '' + ) + core.debug(`destination ${folderPath}`) + const markerPath = `${folderPath}.complete` + await io.rmRF(folderPath) + await io.rmRF(markerPath) + await io.mkdirP(folderPath) + return folderPath +} + +function _completeToolPath(tool: string, version: string, arch?: string): void { + const folderPath = path.join( + cacheRoot, + tool, + semver.clean(version) || version, + arch || '' + ) + const markerPath = `${folderPath}.complete` + fs.writeFileSync(markerPath, '') + core.debug('finished caching tool') +} + +function _isExplicitVersion(versionSpec: string): boolean { + const c = semver.clean(versionSpec) || '' + core.debug(`isExplicit: ${c}`) + + const valid = semver.valid(c) != null + core.debug(`explicit? ${valid}`) + + return valid +} + +function _evaluateVersions(versions: string[], versionSpec: string): string { + let version = '' + core.debug(`evaluating ${versions.length} versions`) + versions = versions.sort((a, b) => { + if (semver.gt(a, b)) { + return 1 + } + return -1 + }) + for (let i = versions.length - 1; i >= 0; i--) { + const potential: string = versions[i] + const satisfied: boolean = semver.satisfies(potential, versionSpec) + if (satisfied) { + version = potential + break + } + } + + if (version) { + core.debug(`matched: ${version}`) + } else { + core.debug('match not found') + } + + return version +} + +function _findLocalToolVersions(toolName: string, arch?: string): string[] { + const versions: string[] = [] + + arch = arch || os.arch() + const toolPath = path.join(cacheRoot, toolName) + + if (fs.existsSync(toolPath)) { + const children: string[] = fs.readdirSync(toolPath) + for (const child of children) { + if (_isExplicitVersion(child)) { + const fullPath = path.join(toolPath, child, arch || '') + if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) { + versions.push(child) + } + } + } + } + + return versions +} diff --git a/packages/tool-cache/tsconfig.json b/packages/tool-cache/tsconfig.json new file mode 100644 index 00000000..a8b812a6 --- /dev/null +++ b/packages/tool-cache/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": "./", + "outDir": "./lib", + "rootDir": "./src" + }, + "include": [ + "./src" + ] +} \ No newline at end of file