From bee1f099e575ebe79c239f210b7b841a7597f87b Mon Sep 17 00:00:00 2001 From: Karl Horky Date: Mon, 6 May 2024 23:24:46 +0200 Subject: [PATCH] feat: throw error when multiple versions specified (#122) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Throw error when multiple versions specified * fix: fmt * fix: fmt * Swallow error on ENOENT * Match versions * refactor: install pnpm --------- Co-authored-by: Khải Co-authored-by: Zoltan Kochan --- dist/index.js | Bin 671728 -> 672112 bytes src/install-pnpm/run.ts | 36 ++++++++++++++++++++++++++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/dist/index.js b/dist/index.js index 56b4c4d3459d0f8b39a27c087a0bae06aa78ebe8..d554a1e0ebd37f5821dec4d0662c7598621b0de1 100644 GIT binary patch delta 5585 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 delta 5261 zcmbtYdvH|M8J}~`&B<;a%Om7PUK>bEf+6gE?C#wFRzpBkAP__mt+*r$iG&1_MTKY; zwFAWgqPO)}3!aeUQB1!wFGBBDjbI^r0ug-XBg+`YSt{j-1U%suzq z^PS)K`hDNGU)@{x)rH!9Q*w*@YU8zPKn>T`O>FDw?u+}QljF5v&D5;Bb8jGR*890P zlOD_TJp#|~_zH8Q4Y507ZL_2Cj`|yWtRdeK*nMHxdl{XJYpsjpYwkkK54PG;9 z;%r5WnC9U6_HVCb@Fb#t_7;oTo0(^Eyfze6O&4h|Ak{(<&0TlHIur~f*PW<|5ed2b zJ+O`hgSxv$O+lRMuG?U(8hV}etX*o=>>YNu9ttN9uS8*HFzkLj6@{6hqa z`|Yqc^k5R~9Q;10CHJSmIutUK>#J~I54iXBFNwv)ksWk|b!2a;ZlvyA4&Rw-O3o@+ z>ydEso@KB$Lcz#j-tXR5l!zA5tgn8*PSFE~VXYplP*hDdtu63in1*J(G*~fBH{sTX zX+6EmnxpaP#27euc~5V=uL1pp(lj0SVezBAR`6vEonQnahE=tH5>-`e(f(F{C=yKS zv2+SXRqx8Scw^^Xh*b@1*3tbdm>CFLR~;AtU+ZD(_<<#gp=*)B>Cep~44fjac$E&9&H$1mT{&| zo*sPZaBc=u!y$1+QC32ao^nr?^{-b}@U&ve7fG844zgAV+x7Lz}&| zkmoB_#`@wQ9CfKniyR1sSQMiaF+Fs)@G`Ixq--keRxV%C3xNe+Ab|88Ae8P{8wy2N z)ZJANh7szJ$6*IC;GsV2{#sEX^DJ z@t%2eubUh1?d)FC*p1daFp6X|8VQOOfAx-b!tn}5CQCbrdl|WDl%{IQ+;f9Ze9g$% z(o~f8FOT;2#aenhmvnYFcA#8aRY;{*iG&PYx&BHR8Pi(a=p(8U3~HJf@R0(^0%DJkTtfpv z@vV<&3<$-(bQrm@Ou<}DLC_F_D|bq?ts~ahi&7D&`}+3SqR#d%$36z&-vYl(>dB}yhx=t50;}73A#$3co$d1`*-)4d z_K&#oZj&qsEFredCO1JziijU(lgkw~q6S3M95Mx8*}s@WHnb|hA%WEL^4oyDWYj&hzUjz12H>$(vZ-#kug6)j}y!v6%xF9lz_CZ8^u zwy#lUI8wRY@&sAnVQ@^S3wecj{TZS`lADl$`-ndWg}7(M<=0bxmP5YCwf6P<$Sm&M zlcX5&rbcpvH;3hVrN4myHT#R_$bu{e`HOdyODYme4-voO7D@5+AyOi9!G8S^+2sXi z1qAsvGtd6{>qIF4N^rv)2&BPDn&T(Qf?*gD2?j=I+0#BEgE?5Ebo)PFk}ro#yZ!S5 zx!c3wF0`k^gbvJY9$F?-;zbW_bFQ!Q(#QM?7J}5rpdzHr**ZGYxw&Z^og@X{Gmf6i zWU!kcXXq@%c8wmC0FvkPku}z0#*`bhpj1{#2Xp_@x$$T`=H#2qve^c8aHgA(Lh2CWg_8FY$*g;ZP?q=9VoL*2x#Slr(%ezKF6icL8z!`>XEOA8sCP8C19 zW+vV5aqJ>Z)YY?SM(5I)6ELa?O5DR?lI^d?2tF^4+QtRDuI?llnxZe?OpNUg7 z2igEpF@uk`%{5e~vh{ETK5!rPm!y2(zx2wL(cX54Nu)#oQzofIoW74vN82YQPrsku zP{^R4Nvo)bAEgT~VnR1hqNoq%iI}v7j+L#B-L{2xQxy5PZ8SlSncL|E$LWpR=}O0M zB!}gDSL1oi0rB>B`hd7;2Q?jQJ+gyNMe-CM?w|#djrZw1-}ddKw^fO++WDx=dgygx zbrXgE2+gk<+*_cmN%*a=inJn{+6lew_> z6WUP4pqeB|78|bfUN*)7=Fehk9;T%WE77iCX(|T>9vE-5P_r47EsXpH*(_n- zP1!8JERDw89<#9-(a1nMl+7wg0%L1B###yQ(j3-Q#6VZ1l`^rRiakgIiPC{kCs(tG zb1Mic^2*o*omKH@HJfjLQ_aTKN-xPoF=sIy@Y-Fo*s0On&@{C%Ce{>W72DmN>}5zP zXk(o~y{?}%GXp4jYd@P@q6PJ2txcF(CQPFEm1W4nYZu+gw)+%QckAi-)jSt3w?AFa zPB8{j#2nyyD2w))jf_J-X@nE~Ro(z=R`42e;{YqU5@oo_40FKL?zWzGY)RVCK#1Gj zY;Ku3^^UgK@_1)YcVm~_1rNBp)}aG=;;jLeFJssKbb!tDQX|3U^ER_ z1S6UC?A|>4jm_*~!eH1CbH2_jv+v!)wi6l&r^>NEy_fD^+SJp&YF=Ng-Dw$Q`T*M( ziT-VDv_sRs-o~EDR&dOb{g;UCVSY)HYxl4Uho$%IVH53t>|qyt3O43RI)=UiuFm}< z8-l(R-amMP&$Q>hz&eQ%3~QQw@K0=h0T$x5rSCGk^j+mUs8dj&;gKE7So_8Iiv7j+ z8NL$vwYdBeZ-MZ?#|<$(pKn)iaC1EGE#SlQQWWLK@dm9T#ue~&V}nMrDZt4geg1Rj zJ#n;vUz%YUn$xk1ib9?TilnB}CODWrwcgao*l8o!YTnOWsl_;$!)I1@*`2xI#vJnpXXbR(5u^&ug90I2Et5v#a<7F9d(k z2^MH{sudi|{x9sY27VHTLr`}`6)U$F2ly{31&$94c@n*OiO!1|C?|G|=lNoW&YR@t z13E9Y_v-x1Q4B1bR$X75&c{*)*2l~&v46OlL&vFU5gW?aXOuy2p9=Q;iw8~l=L1xu zrWSrjdcfeE9|}iw`;8Xf;!*HXRLtkClFs_(^E^Vsz%nE=0r|-rc=JU=1a`CN=7$&X zF&9lTvLxsW_$BGr;XI3fOW3zA;D1pR{71oY?CgbHm8o^#LS9+zB(@V8$l>WDvfCa@ z&x%hL@{)^M zZt3PlkoBe}?(F8pVH{Chj#?axw{;-5$*~Cku5fqUS}tQ(mdV$;`50MzWsRPKfhPOZ zoF0D8i&x90W9%w!15N3ok`cc^5~ffRVMr;O@OFs}w_z@mgt*U3{6mdebhx$bt0DE { @@ -41,10 +43,33 @@ async function readTarget(opts: { readonly standalone: boolean }) { const { version, packageJsonFile, standalone } = opts - - if (version) return `${ standalone ? '@pnpm/exe' : 'pnpm' }@${version}` - const { GITHUB_WORKSPACE } = process.env + + let packageManager + + if (GITHUB_WORKSPACE) { + try { + ({ packageManager } = JSON.parse(readFileSync(path.join(GITHUB_WORKSPACE, packageJsonFile), 'utf8'))) + } catch (error: unknown) { + // Swallow error if package.json doesn't exist in root + if (!util.types.isNativeError(error) || !('code' in error) || error.code !== 'ENOENT') throw error + } + } + + if (version) { + if ( + typeof packageManager === 'string' && + packageManager.replace('pnpm@', '') !== version + ) { + throw new Error(`Multiple versions of pnpm specified: + - version ${version} in the GitHub Action config with the key "version" + - version ${packageManager} in the package.json with the key "packageManager" +Remove one of these versions to avoid version mismatch errors like ERR_PNPM_BAD_PM_VERSION`) + } + + return `${ standalone ? '@pnpm/exe' : 'pnpm' }@${version}` + } + if (!GITHUB_WORKSPACE) { throw new Error(`No workspace is found. If you're intended to let pnpm/action-setup read preferred pnpm version from the "packageManager" field in the package.json file, @@ -52,7 +77,6 @@ please run the actions/checkout before pnpm/action-setup. Otherwise, please specify the pnpm version in the action configuration.`) } - const { packageManager } = JSON.parse(await readFile(path.join(GITHUB_WORKSPACE, packageJsonFile), 'utf8')) if (typeof packageManager !== 'string') { throw new Error(`No pnpm version is specified. Please specify it by one of the following ways: @@ -64,7 +88,7 @@ Please specify it by one of the following ways: throw new Error('Invalid packageManager field in package.json') } - if(standalone){ + if (standalone) { return packageManager.replace('pnpm@', '@pnpm/exe@') }