From 174d43119c04df03f5ccf4a4d1d4717cbd2188cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Grzegorzewski?= Date: Sat, 23 Nov 2024 06:18:01 +0100 Subject: [PATCH] feat: added support for ignore pattern to cli - defaults to node_modules resolves #328 --- README.md | 2 ++ cli.js | 35 ++++++++++++++++++++++++++----- tests/cli.js | 5 +++++ tests/snapshots/cli.js.md | 22 +++++++++++++++++++ tests/snapshots/cli.js.snap | Bin 3992 -> 4122 bytes tests/snapshots/eslint.js.snap | Bin 853 -> 833 bytes tests/snapshots/fields.js.snap | Bin 414 -> 414 bytes tests/snapshots/main.js.snap | Bin 1415 -> 1408 bytes tests/snapshots/prettier.js.snap | Bin 485 -> 493 bytes 9 files changed, 59 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 2ffc0b80..ed7703e6 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,8 @@ CLI also supports multi file paths or [`glob`](https://github.com/sindresorhus/g $ sort-package-json "my-package/package.json" "other-package/package.json" $ sort-package-json "package.json" "packages/*/package.json" + +$ sort-package-json "package.json" "packages/*/package.json" --ignore "packages/one-package" ``` #### `--check` flag diff --git a/cli.js b/cli.js index 91e63d62..0b6359c0 100755 --- a/cli.js +++ b/cli.js @@ -23,6 +23,7 @@ If file/glob is omitted, './package.json' file will be processed. -c, --check Check if files are sorted -q, --quiet Don't output success messages -h, --help Display this help + -i, --ignore An array of glob patterns to ignore -v, --version Display the package version --stdin Read package.json from stdin `, @@ -43,11 +44,13 @@ function sortPackageJsonFile(file, reporter, isCheck) { reporter.reportChanged(file) } -function sortPackageJsonFiles(patterns, options) { - const files = globSync(patterns) +function sortPackageJsonFiles(patterns, { ignore, ...options }) { + performance.mark('start') + const files = globSync(patterns, { ignore }) const reporter = new Reporter(files, options) const { isCheck } = options + performance.mark('sorting') for (const file of files) { try { sortPackageJsonFile(file, reporter, isCheck) @@ -55,8 +58,15 @@ function sortPackageJsonFiles(patterns, options) { reporter.reportFailed(file, error) } } - + performance.mark('finish') reporter.printSummary() + if (process.env.DEBUG) { + console.log([ + performance.measure('Glob Search', 'start', 'sorting'), + performance.measure('Sorting', 'sorting', 'finish'), + performance.measure('Total', 'start', 'finish'), + ]) + } } async function sortPackageJsonFromStdin() { @@ -64,7 +74,10 @@ async function sortPackageJsonFromStdin() { } function run() { - const cliArguments = process.argv.slice(2) + const cliArguments = process.argv + .slice(2) + .map((arg) => arg.split('=')) + .flat() if ( cliArguments.some((argument) => argument === '--help' || argument === '-h') @@ -85,14 +98,22 @@ function run() { } const patterns = [] + const ignore = [] let isCheck = false let shouldBeQuiet = false + let lastArg for (const argument of cliArguments) { + if (lastArg === '--ignore' || lastArg === '-i') { + ignore.push(argument) + continue + } if (argument === '--check' || argument === '-c') { isCheck = true } else if (argument === '--quiet' || argument === '-q') { shouldBeQuiet = true + } else if (argument === '--ignore' || argument === '-i') { + lastArg = argument } else { patterns.push(argument) } @@ -102,7 +123,11 @@ function run() { patterns[0] = 'package.json' } - sortPackageJsonFiles(patterns, { isCheck, shouldBeQuiet }) + if (!ignore.length) { + ignore[0] = 'node_modules' + } + + sortPackageJsonFiles(patterns, { ignore, isCheck, shouldBeQuiet }) } run() diff --git a/tests/cli.js b/tests/cli.js index d68ee298..a4234d1a 100644 --- a/tests/cli.js +++ b/tests/cli.js @@ -500,3 +500,8 @@ test('run `cli --stdin` with input from stdin with \\r\\n', macro.testCLI, { message: 'The line feed should be CRLF in output', stdin: `{\r\n "description": "Description",\r\n "name": "Name"\r\n}\r\n`, }) + +test('run `cli --ignore=abc`', macro.testCLI, { + args: ['--ignore=abc'], + message: 'Should not fail on adding ignore pattern', +}) diff --git a/tests/snapshots/cli.js.md b/tests/snapshots/cli.js.md index 8fcaed19..f9612c97 100644 --- a/tests/snapshots/cli.js.md +++ b/tests/snapshots/cli.js.md @@ -24,6 +24,7 @@ Generated by [AVA](https://avajs.dev). -c, --check Check if files are sorted␊ -q, --quiet Don't output success messages␊ -h, --help Display this help␊ + -i, --ignore An array of glob patterns to ignore␊ -v, --version Display the package version␊ --stdin Read package.json from stdin␊ ␊ @@ -52,6 +53,7 @@ Generated by [AVA](https://avajs.dev). -c, --check Check if files are sorted␊ -q, --quiet Don't output success messages␊ -h, --help Display this help␊ + -i, --ignore An array of glob patterns to ignore␊ -v, --version Display the package version␊ --stdin Read package.json from stdin␊ ␊ @@ -79,6 +81,7 @@ Generated by [AVA](https://avajs.dev). -c, --check Check if files are sorted␊ -q, --quiet Don't output success messages␊ -h, --help Display this help␊ + -i, --ignore An array of glob patterns to ignore␊ -v, --version Display the package version␊ --stdin Read package.json from stdin␊ ␊ @@ -107,6 +110,7 @@ Generated by [AVA](https://avajs.dev). -c, --check Check if files are sorted␊ -q, --quiet Don't output success messages␊ -h, --help Display this help␊ + -i, --ignore An array of glob patterns to ignore␊ -v, --version Display the package version␊ --stdin Read package.json from stdin␊ ␊ @@ -205,6 +209,7 @@ Generated by [AVA](https://avajs.dev). -c, --check Check if files are sorted␊ -q, --quiet Don't output success messages␊ -h, --help Display this help␊ + -i, --ignore An array of glob patterns to ignore␊ -v, --version Display the package version␊ --stdin Read package.json from stdin␊ ␊ @@ -1409,3 +1414,20 @@ Generated by [AVA](https://avajs.dev). `, }, } + +## run `cli --ignore=abc` + +> Ignore pattern should be recognized + + { + args: [ + '--ignore=abc', + ], + fixtures: [], + result: { + errorCode: 2, + stderr: `No matching files.␊ + `, + stdout: '', + }, + } diff --git a/tests/snapshots/cli.js.snap b/tests/snapshots/cli.js.snap index 87200f1f73316f2f0bb08f4cb3182fd580383e0c..690bb58f06242ae763318bbe4daf54419f62494e 100644 GIT binary patch literal 4122 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 diff --git a/tests/snapshots/eslint.js.snap b/tests/snapshots/eslint.js.snap index 4d7a8989250c4879d01e285957cc18c281dcb2c7..4ecd6584e4d735f7087e277bf2c716fbc1a60b8f 100644 GIT binary patch literal 833 zcmV-H1HSx0RzV{3kHe*)tY~xf-x%S9N+Dh3 z1jsx?(jSWm00000000B+R!?u!Fci15wnLMqZ5k&|RwOR4tb*gj0f`BT(+-FOnkMEX zudP?lj%;UJK|3J60B3IO#*Od57vYN_p*T*`rfIgRNaL^`>i5@j-uwCY{CyB|8IARq zD=^G(;Gj7Z=9Lr!He_1RM31D=pReMW8v4HTXa%jJ?1vxV?jAzuB|>P!Ln!bN`m=)2 zHtucV-a&W*k-@kWH#avCUPrit@CMq(-b1{CaCZxLnMhLOH18+=v_^Q*ny`*=5n1_oZ`ZO zh^?m(okyh{tUVW;Ri1%TEY3ZZ;=DsHL&~kM5Q`Hi8G+U^|GZLhULoHI&IFVdt6PdQ zK_ZoTCsGaZKGQVhu+J1khMl>ywg$LeXckHRH9{`eE^F;vm3dXIzPeuX_GD^q+U@)P z-f@3-W^P?$w|j{KV6# zem9Yh@(}v!A@r-WBEif$FoU3&fBE(O{Sjck`i!)R|Lb1A(5; zL=_X~@Th@Bf0QiRMO)stP76q<$Jn7OM*-LjYRt{PC%Y$Az3jNOHH=?Z0nStptWWp0 z34ik`f8C^SpZ4t&fAQ3xE7{!SC#}<;T>Anbw|E7RfA$ivJAKHa&4_8D9XJi+oPJ8$A*aCJ+-(9E=A;h)mnJ zyTcAM&CC>74F}^F@a#=)-uw=J5x1?Rz3aWKkz$yYJ91ljh5$y>iNCm zdE0(>%kLgWrw~iuFQ%KDo1VY!`EAeNP?*+3f5r1VTYd-AG?UJ1{qR4o1wn82486TT z`;_;CnyOzr)&hF2Z9O$_9Bb+y&*rd(xmV$9YC5EKEqeEep_GLi)9{4zM1E$&HxM8J$3>^iyOv+-S% z${Nx6RVO-J3CKzly14i|VvZKHu&e0@{5g`$Z z$Dt~I#tptcP^_D<#E{C2h1ZY=1MlY(%l)dez;i&c>?c^HMEx;}&cIT7&Rbb=DlWq@ zOs3%6F@3K>(KO4K*0sMQROz}ck>uMJvA!5pTK_-Axw~tz^wnNKs9NcK+9;h?8fygf zqJ+vj&e3s=iheItwBv2HzP1;TbheEhxpd@&)l|c-_dVG?o#xB5OOwOo)fC`dRbaKd zThi5c_?g%ZUEUxUbb7l}Q@3}o(9rQqx3|>w=TbJ;`3<76`@0Lb;0wSYZuu49F4sT! z5->Zx*JwGyA`p(85)%?c5Xcb(1I&dC)PD_UKxNOZy4ty?%spkAC?gC97m9!i+vp64mDZ3VaDk93M+~U3 zLc@KMXp=-AFWPwFcj0RMmj@!0)?{Ct$OD*qE7T%I{S@48%UZ{f?0)8Cnt&ikZqU{m zuN3Mm*@}{r00000000BslEF&DKoEx8iU_^=21CwGbMHwIym%2jh?HVB$s}2`$%dUt zk(M6xP3(L420oO#X(cV~MFkP}urNFS3^V_JuW6)oT+quJS+YVE>xzwx8rFs+RidU` zGd-`9M6kH;zn}EZdhYa3d*_3<{&EQ5?bdh`nA$ghWqaFfB}%lf-Ze_j;Zm9cl{fm# zVkx9@>8dU-3MYwM#W>dErs#ByX;nFMJqdyXVbCcboQ`uzU`KCM0>n}&h!8kONTneL zR9IrgU6F7_qKg+UUU+S|8vW&k2(A6e7dNu^Y`8)tB2-WQ?Y6Bp4B_r)PG=zqg75}) zt?){sO2REDX(W;ik03Hg_Yk=ow1{lfhj1iFv5_@PUAg((2!1W%LS*PalCB_XWV^B8 zhK`y?);%_2F3FFj^{(7_DawX|gLYkq++g~x7Gs)czX;p^Ht5Ij&iB~eP-dz900Rus I)7Jz50DDNlL;wH) diff --git a/tests/snapshots/main.js.snap b/tests/snapshots/main.js.snap index 99888a068177e3e01a8fcba32275ab1a308c7d6b..6d8165db0c83995b3ed793379f1a128f1df5200a 100644 GIT binary patch literal 1408 zcmV-`1%LWMRzVd{Gi1+0BV3ADI7VrYOwNLqYQaJBU4d zNWVvWk&SjbxSCC~H1^%yVYh?_YlQAbFU$zx31e_%cb7Z<8c>{3J=fev%~r ze32wC(v#=u$=lTxWHwD(^YrvINuMU^CrSD&d66D{o<2y@&I{N$ZACJz? z&c8C*21<5**_q!so@JKrnB_{o-hs5nIgB{+GzPp*7O}P6D2*&x#P0A;Za}e>KKtuaHMulIrEP^cQgjSY0d ztz_Otia^BP6tLI9RQwP1i z8$QV)MSfgEX4?lBLa&=ju>CKr1kyW*I>>@ccxN@w@Y(io;9)w^|1uc&241z#zJ~*k z9}B58bRHg)#|y3^DE1?JzpfyXUzru z4jIG=hR+N~VrrRliI1Z(kuR7Kp!eS~DJgRM1o~`L2^A}Fy{%13ZMGQHWFW^g`fzY0 zrfi=`VXlKl*;ONK>%A?8o&iH%`wXRhMp$KnuN^}Mak#%RF$~QpPgjuck)PfhCRssY zG+@XJKo9RQ;-a3-jveLc3R#ut;YMOKT+n%he1{r!4f+S6R!n%k!;Ocv+^?pw8)e7g z+6!oU-X$?WJekDTE5XgC`w03(=;LqK0@U71T)Z0)YhanZkj(NO-mHhchX7{0NT%mq zq;wPMVee5X!>yw1CO}>_O4RO~FeG;nb<<^0Cd{7<&*AlY4Vl*h=yi99Tol}1Y?Ru1 zrvXQvs@54U%v;1Z$5C(&q1gmR2T0q2pcmyWWG$;4F8PiZE;C=&bny1ny z8Xqo;Mnx0(y3E^cxwT1=)fQh78OZJEHyzuU#4ADJK?ZWyN^ecYGMa9HP`y!(y;0|n z{v4$84=Lmg;)hQM>WQlD@=SlcyUyi2Q!AW`thrq6aPB&N?oFTg<6Qi3#7yNKQ|IO| z*5lRA+*vuFK_A+0=Av~R7gHI|R4zC^{o@fi9Us%#PAqcbr+<7enah@@s=WDK`M!6L z*sgc?yggoR4=dkc7B*Mq#Ip0ldsDo&o;q2URPS^3=JJk2EZ<*#b{)=04p-81`Se`g z8n48cWV18fi&&p!wxiLWKQo!ueN?gwv*iCNXTN)9b|{}2cE9eovW(SJ!>Xd+Ga6=6 zv6^Epmt4}*S=fnL-23@2E0o*UShwxl-L5ORq_=XHp3S)TvaC9s>}JjO!D9LEeCMKH z!45l$3+lrKRo%E36z@SV=|W9aozs1gUQIm8^iOcB-6K4D2Ey&%`rSs=BFBFooUJ*C O-24lN%n?Rm7ytmH;=(il literal 1415 zcmV;21$g>FRzVK}^;00000000BMS>JEuG!Wk0(H7ltx*j0GV|C&MiN2#gA>f2S9EVg1iAQhZ z&ARK@IosLZ3h}_70?+(=ykpNy66e<@tqPTPJ>U0DcI|A&o|*o+SxcSn>>qz|C!FMO zGrnP!bQe||_r_%02&-6Wx7vB1EMt!S`ss&{S7)p6m%N{xT>0@U|9bktYW2B){qxCc z^-*&AA~}7tzTv4$lEyqgKVK!!R>^y-wS5J>^Ws+GdJNJoqw zRgM!2BQYwI{99gfm2s5{TGfz^yt8rlZ0MhU8D#&Ch&i5XLl;E|Rb3SRxf2TJ9wAcI zM&zh~RkO~Bb>-+IBiPlo={f|A9%TiB9{^{)rDcOP#msB&SlqXxVIe~dDvE@Pv$oK0^c&q@7}o3z2;|@?mE6efX_xq z{2VlplML<|jL7(hT`0I6wF!LAq~zxCHB$;Bw@ZM}Ru{ZvIjpy_QK{?>f*K9rM2Zg% zjK~zt9jQ&=Z#YIgj16;nQz_B#gj&@)hQC>aP_-GCVh@XGY*LiJZ&wAwT`Y#6@A%kQJw)n%5ERKIUcu~go}t!4(Cf*xvj~>+FOESUL(=Jj#^3BR zeM=hZ1UYwi$Hw?H@&w9rmy_Ey2-!vNTDpD$f1pD*p<%Q~1mBxjaH zG>H$9(oUp<$)nU(_;c!jdV@%{T2|qiuqd|>blYZ8HqM`{$oQ+x#vg#FMUeDxh+O8v zU2e7BkyDRDPhFW57Dg7b^>GxPLtxf{(E`-=T;dN!7O;+$feHiSLkT`GHjJ$)8*#t* zZK}R2U845!Cr+(`34B##&9>aws3;%EK!X9?9zQd%wTZlz7#?T<=Qr`4^+AZ!jS#5s zbYT7aliz!({27M41$_3br=IG{Ezk6ayX#!eGqu90$ePR5j_0n^=ic;*Kg`9CN6b{- zF?DYCV|~2ZnL8`zGw5Uc&0Mq&<6POm!Dn7Gm_(# z^jtnYm$!~r;!CpGneN3{pJleA(VRasnbt#8vJ121|0!p`e`aTt4~HQNUp z%YWxP7u^cB-%(spA1y}z(>!y4Ewja-s(zb V@Xv#bjo>n~{{n~15k_Gc00307)EfW* diff --git a/tests/snapshots/prettier.js.snap b/tests/snapshots/prettier.js.snap index 4561efa0b35ef74d8a295a6c45c988b6ceeff990..7ae48bc4cfad40a6cb973684f2160b4dd617b248 100644 GIT binary patch literal 493 zcmVdDbuGclYz2ShJyI zo)NRAOuJOgU1Hh&xQ}DS>OwpmKojyud=&Kv0KNjiGXT5*z%K!CC>lM{I30hZ2@6qv zcDr2=Z4e(obl_0bj>G|odQa4KI$v;6-Q2YhWiehxnAeEXUQ?Fon4FAoF#PgYE@)CxYZ(ruiaiSf%;E%O2$O++8XO58!%_!xt{@XacGS$Wpkegy4 zms?qH$RW-kl%4%NIhxosrvL8BzXRQ!082=N;V1xH9#;|Uhrw@1oW^cqB_E3j00000000BEQ%z0+F&J$@217!C=+Z@g2C@FZTqPVG$i83{3QlBV;$*XDcQd+F<-CsqGeKhFULN(e_WAPR_u zj`&E23iZ=G2srXf`c@=ml6-WRmRe>%G3(Q;FSA}KA$!zoQ17gF1AU}4`>ogOgjNaN zA+%=B6!vM6&{BhzL^K*>THQZZ81vKiev2iwLDU_@u?RpLsNFgK0Ws!6is<@O4Tszi zexxGs9jRd`3^w3WgM+5YnQ3~!-r&9|W|i5BsInTNP?5HExw^u7YK&WGb`5^lvr+%D z*yZ_iHG5XUgDnd+kh}+Sa(Eu9u?(12F|ux|vCFt-%Er=kkz>j=vsUd+PW)jOe~B~- zmvo!FEW{jT>8oTo425Re=|dqU!w}dOh$7(#?@{B=7mG7!=>@E1XsTq0$*06RM! zkTKh7($H5?0ROJa?k?Sp0cIh!J6#vxrfa;G