From c260ca2fc2d08bf120b0f110b71ef918ee7d8c6c Mon Sep 17 00:00:00 2001 From: Huakun Shen Date: Sun, 19 Jan 2025 02:18:03 -0500 Subject: [PATCH] feat: Add version check to cli, check if package.json and jsr.json have different versions --- .changeset/config.json | 3 ++- apps/cli/CHANGELOG.md | 6 +++++ apps/cli/bun.lockb | Bin 3124 -> 0 bytes apps/cli/package.json | 2 +- apps/cli/src/commands/verify.ts | 44 +++++++++++++++++++++++++++++++- 5 files changed, 52 insertions(+), 3 deletions(-) delete mode 100755 apps/cli/bun.lockb diff --git a/.changeset/config.json b/.changeset/config.json index e3e1b7f..1a0bb03 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -14,6 +14,7 @@ "@kksh/utils", "@kksh/extension", "@kksh/schema", - "@kksh/supabase" + "@kksh/supabase", + "@kksh/ui" ] } diff --git a/apps/cli/CHANGELOG.md b/apps/cli/CHANGELOG.md index 68709f0..c1fada5 100644 --- a/apps/cli/CHANGELOG.md +++ b/apps/cli/CHANGELOG.md @@ -1,5 +1,11 @@ # kksh +## 0.0.30 + +### Patch Changes + +- Add version check to cli, check if package.json and jsr.json have different versions + ## 0.0.29 ### Patch Changes diff --git a/apps/cli/bun.lockb b/apps/cli/bun.lockb deleted file mode 100755 index 56bb31cc4e2ccff86b0a258c0b2ca20dc81f6221..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3124 zcmY#Z)GsYA(of3F(@)JSQ%EY!;{sycoc!eMw9K4T-L(9o+{6;yG6OCq1_lP+m76wh zott!HgVKTQnr^)*li%F)lWSTowKP=$}Dgpv_2*tpGMmIqD*)RnR$vK%| zF)knp#0{Q6niEJ*1JXdl8g2t=9w6Nd6$esabx&6)$s|17s(gw~bFa5S1R8H zUMo%1kLp$1YHP`vZ*%Nb;H=$?PtT~FpLHp7zG{Pxc57-9Bgg;>04NkdKm>?Qf$jpC z2f}PXObmeO4+1K-M$#`xjAo!3nEr)8wiQr6$Q{7&Vc-K|VgOA4bD&~Jpng^$Ed|6N zniv4nuL1P52~a;MhCzCv5l_$vnEni)ejBL$ApI-^bs`ji%m87a5e&>wHpmPR9~KWF z8pMYuG$5NiegF9XfefN10Gh|h05KQYXqFu_xO&aQFJy`dlodN0=BT-@eE!ZnRqr_W zX-S*NbB9V+T;b-Op0#&z+R;kg?Pc1$e9Im*co>N}HOa+)_@tI&fMhN#oI%cJN$>Al z7A{o&O>*_NoV6dmTrlda(9tvPugVT$R#&OM|6G`Lp@;XDrWZRhlfQ0fI4Ev?W5(*q zp3jdq9ID~IHZNZb$y`u)!vM?1lZT&Q$xN^>JyxOZ$aHLi|E{2oSM1HZQZo{JL}uM7 zS#rqiLUFy_>XHn_K!c-<6Au^L_0PyOVYZvbT3#5XJqyWP6FOr^e^E!L`PoTL2 z1z_P0qsei{06L!>=MI#f4bZaa2$bfsDK1LZ%gie-NzBR7gVnftAw{XFb_zxY3dNaK zsrhL-3MLAPIhpBs`Dvg!5(NJJhX4>8lny^Y4dj4Uw_G-*#zuBPeK<@2#TTf20Oe&+ zyo2(H1ypYck!HZkSCBa%{V=mYbO+Q7J77f)0$euHMrN_47C>K_!QEtt?kh;W4y&gH z7~@R!4D<}ZqTm`IR?~AZKU2onPAbQ1@Ra|2h@ir;66o;(&E(IveY6y z*NT$VqP)bM;F6-uymUJSLqs50zyqPAI2ml_f!`uai>6Ev0X4`#V*K|O+q{!4+*MLs zoLU4lE%vfPV^Es+j~HMig4#tb7N%zyEBOBXfVyA~v?2zk0bqC=;tcMR%7WD54C@Co@w$j%xN=?r!E-9+i%PYvuD%Q&{O4mmy($@tk)dhvLnO;eH6^H{i z0grCD8mMNldax0O<{&emrk58(8F~3Bsd$V-QUx>+q*xachlVB~(@OJFGLth2Itp1C z&=_Q{E;!;%L52}_MtLz%cX_ccIDr|0g9IFRkodx*9}xvW0}vdb<)(UIk3bXIprZf= CnMEc5 diff --git a/apps/cli/package.json b/apps/cli/package.json index b6b84c3..e4f8c3d 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,7 +1,7 @@ { "name": "kksh", "module": "dist/cli.js", - "version": "0.0.29", + "version": "0.0.30", "type": "module", "bin": { "kksh": "./dist/cli.js", diff --git a/apps/cli/src/commands/verify.ts b/apps/cli/src/commands/verify.ts index 9853018..7a98182 100644 --- a/apps/cli/src/commands/verify.ts +++ b/apps/cli/src/commands/verify.ts @@ -32,6 +32,45 @@ export function verifyTemplateUiCommand(projectRoot: string, cmd: TemplateUiCmd) return true } +export function verifyVersion(projectPath: string): boolean { + const pkgJsonPath = path.join(projectPath, "package.json") + const jsrJsonPath = path.join(projectPath, "jsr.json") + const denoJsonPath = path.join(projectPath, "deno.json") + const versions = { npm: undefined, jsr: undefined, deno: undefined } + + const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8")) + versions.npm = pkgJson.version + if (fs.existsSync(jsrJsonPath)) { + const jsrJson = JSON.parse(fs.readFileSync(jsrJsonPath, "utf-8")) + versions.jsr = jsrJson.version + } + if (fs.existsSync(denoJsonPath)) { + const denoJson = JSON.parse(fs.readFileSync(denoJsonPath, "utf-8")) + versions.deno = denoJson.version + } + if (!versions.npm) { + logger.error(`version is not set in package.json`) + return false + } + if (fs.existsSync(jsrJsonPath) && fs.existsSync(denoJsonPath)) { + logger.error(`Both jsr.json and deno.json are present, only one is allowed`) + return false + } + if (versions.jsr && versions.jsr !== versions.npm) { + logger.error( + `jsr.json version ${versions.jsr} does not match package.json version ${versions.npm}` + ) + return false + } + if (versions.deno && versions.deno !== versions.npm) { + logger.error( + `deno.json version ${versions.deno} does not match package.json version ${versions.npm}` + ) + return false + } + return true +} + export function verifySingleProject(projectPath: string): boolean { logger.info(`Verifying project at ${projectPath}`) const pkgJsonPath = path.join(projectPath, "package.json") @@ -52,7 +91,7 @@ export function verifySingleProject(projectPath: string): boolean { logger.info(`name`, pkg.name) logger.info(`version`, pkg.version) logger.info(`identifier`, pkg.kunkun.identifier) - if (pkg.files.length === 0) { + if (!pkg.files?.length) { logger.warn( `"files" field is empty, it is recommended to include only the necessary files, e.g. dist` ) @@ -66,6 +105,9 @@ export function verifySingleProject(projectPath: string): boolean { pkg.kunkun.identifier = folderName // } } + if (!verifyVersion(projectPath)) { + return false + } for (const cmd of pkg.kunkun.customUiCmds ?? []) { if (!verifyCustomUiCommand(projectPath, cmd)) { return false