From 49726c18154cb2675d408c0269d8ecd456eacbf9 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:06:19 +0800 Subject: [PATCH] chore: misc CLI fixes --- packages/schema/src/cli/actions/generate.ts | 4 ++-- packages/schema/src/cli/actions/info.ts | 4 +++- packages/schema/src/cli/actions/init.ts | 3 +-- packages/schema/src/cli/cli-util.ts | 8 ++++---- packages/schema/src/cli/index.ts | 2 +- packages/schema/src/utils/version-utils.ts | 2 +- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/schema/src/cli/actions/generate.ts b/packages/schema/src/cli/actions/generate.ts index d697504ee..229a9ddd8 100644 --- a/packages/schema/src/cli/actions/generate.ts +++ b/packages/schema/src/cli/actions/generate.ts @@ -37,8 +37,8 @@ export async function generate(projectPath: string, options: Options) { // check for multiple versions of Zenstack packages const packages = getZenStackPackages(projectPath); - if (packages) { - const versions = new Set<string>(packages.map((p) => p.version)); + if (packages.length > 0) { + const versions = new Set<string>(packages.map((p) => p.version).filter((v): v is string => !!v)); if (versions.size > 1) { console.warn( colors.yellow( diff --git a/packages/schema/src/cli/actions/info.ts b/packages/schema/src/cli/actions/info.ts index dddef9e27..c212babf4 100644 --- a/packages/schema/src/cli/actions/info.ts +++ b/packages/schema/src/cli/actions/info.ts @@ -16,7 +16,9 @@ export async function info(projectPath: string) { console.log('Installed ZenStack Packages:'); const versions = new Set<string>(); for (const { pkg, version } of packages) { - versions.add(version); + if (version) { + versions.add(version); + } console.log(` ${colors.green(pkg.padEnd(20))}\t${version}`); } diff --git a/packages/schema/src/cli/actions/init.ts b/packages/schema/src/cli/actions/init.ts index 5790997e6..1016d61a9 100644 --- a/packages/schema/src/cli/actions/init.ts +++ b/packages/schema/src/cli/actions/init.ts @@ -63,8 +63,7 @@ export async function init(projectPath: string, options: Options) { if (sampleModelGenerated) { console.log(`Sample model generated at: ${colors.blue(zmodelFile)} -Please check the following guide on how to model your app: - https://zenstack.dev/#/modeling-your-app.`); +Learn how to use ZenStack: https://zenstack.dev/docs.`); } else if (prismaSchema) { console.log( `Your current Prisma schema "${prismaSchema}" has been copied to "${zmodelFile}". diff --git a/packages/schema/src/cli/cli-util.ts b/packages/schema/src/cli/cli-util.ts index b822f75ee..54ac123bd 100644 --- a/packages/schema/src/cli/cli-util.ts +++ b/packages/schema/src/cli/cli-util.ts @@ -227,13 +227,13 @@ export async function getPluginDocuments(services: ZModelServices, fileName: str return result; } -export function getZenStackPackages(projectPath: string) { +export function getZenStackPackages(projectPath: string): Array<{ pkg: string; version: string | undefined }> { let pkgJson: { dependencies: Record<string, unknown>; devDependencies: Record<string, unknown> }; const resolvedPath = path.resolve(projectPath); try { pkgJson = require(path.join(resolvedPath, 'package.json')); } catch { - return undefined; + return []; } const packages = [ @@ -245,7 +245,7 @@ export function getZenStackPackages(projectPath: string) { try { const resolved = require.resolve(`${pkg}/package.json`, { paths: [resolvedPath] }); // eslint-disable-next-line @typescript-eslint/no-var-requires - return { pkg, version: require(resolved).version }; + return { pkg, version: require(resolved).version as string }; } catch { return { pkg, version: undefined }; } @@ -286,7 +286,7 @@ export async function checkNewVersion() { return; } - if (latestVersion && semver.gt(latestVersion, currVersion)) { + if (latestVersion && currVersion && semver.gt(latestVersion, currVersion)) { console.log(`A newer version ${colors.cyan(latestVersion)} is available.`); } } diff --git a/packages/schema/src/cli/index.ts b/packages/schema/src/cli/index.ts index c58db8c43..62084ce9b 100644 --- a/packages/schema/src/cli/index.ts +++ b/packages/schema/src/cli/index.ts @@ -73,7 +73,7 @@ export const checkAction = async (options: Parameters<typeof actions.check>[1]): export function createProgram() { const program = new Command('zenstack'); - program.version(getVersion(), '-v --version', 'display CLI version'); + program.version(getVersion()!, '-v --version', 'display CLI version'); const schemaExtensions = ZModelLanguageMetaData.fileExtensions.join(', '); diff --git a/packages/schema/src/utils/version-utils.ts b/packages/schema/src/utils/version-utils.ts index 0e2de705d..3a2daae57 100644 --- a/packages/schema/src/utils/version-utils.ts +++ b/packages/schema/src/utils/version-utils.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -export function getVersion() { +export function getVersion(): string | undefined { try { return require('../package.json').version; } catch {