diff --git a/packages/schema/src/cli/cli-util.ts b/packages/schema/src/cli/cli-util.ts index 78beb7ee0..25ee919a3 100644 --- a/packages/schema/src/cli/cli-util.ts +++ b/packages/schema/src/cli/cli-util.ts @@ -9,7 +9,7 @@ import { URI } from 'vscode-uri'; import { STD_LIB_MODULE_NAME } from '../language-server/constants'; import { createZModelServices } from '../language-server/zmodel-module'; import { Context } from '../types'; -import { installPackage, PackageManagers } from '../utils/pkg-utils'; +import { ensurePackage, installPackage, PackageManagers } from '../utils/pkg-utils'; import { CliError } from './cli-error'; import { PluginRunner } from './plugin-runner'; @@ -54,6 +54,8 @@ export async function initProject( } } + ensurePackage('prisma', true, packageManager, 'latest', projectPath); + ensurePackage('@prisma/client', false, packageManager, 'latest', projectPath); installPackage('zenstack', true, packageManager, tag, projectPath); installPackage('@zenstackhq/runtime', false, packageManager, tag, projectPath); diff --git a/packages/schema/src/utils/pkg-utils.ts b/packages/schema/src/utils/pkg-utils.ts index a1be85b98..dedef31d7 100644 --- a/packages/schema/src/utils/pkg-utils.ts +++ b/packages/schema/src/utils/pkg-utils.ts @@ -42,11 +42,12 @@ export function ensurePackage( pkg: string, dev: boolean, pkgManager: PackageManagers | undefined = undefined, + tag = 'latest', projectPath = '.' ) { try { require(pkg); } catch { - installPackage(pkg, dev, pkgManager, projectPath); + installPackage(pkg, dev, pkgManager, tag, projectPath); } } diff --git a/packages/schema/tests/cli/cli.test.ts b/packages/schema/tests/cli/cli.test.ts index f42ee4846..a3ead5df9 100644 --- a/packages/schema/tests/cli/cli.test.ts +++ b/packages/schema/tests/cli/cli.test.ts @@ -33,7 +33,7 @@ describe('CLI Tests', () => { createNpmrc(); const program = createProgram(); - program.parse(['init', '--tag', 'canary'], { from: 'user' }); + program.parse(['init', '--tag', 'latest'], { from: 'user' }); expect(fs.readFileSync('schema.zmodel', 'utf-8')).toEqual(fs.readFileSync('prisma/schema.prisma', 'utf-8')); }); @@ -47,7 +47,7 @@ describe('CLI Tests', () => { fs.renameSync('prisma/schema.prisma', 'prisma/my.prisma'); const program = createProgram(); - program.parse(['init', '--tag', 'canary', '--prisma', 'prisma/my.prisma'], { from: 'user' }); + program.parse(['init', '--tag', 'latest', '--prisma', 'prisma/my.prisma'], { from: 'user' }); expect(fs.readFileSync('schema.zmodel', 'utf-8')).toEqual(fs.readFileSync('prisma/my.prisma', 'utf-8')); }); @@ -56,7 +56,7 @@ describe('CLI Tests', () => { fs.writeFileSync('package.json', JSON.stringify({ name: 'my app', version: '1.0.0' })); createNpmrc(); const program = createProgram(); - program.parse(['init', '--tag', 'canary'], { from: 'user' }); + program.parse(['init', '--tag', 'latest'], { from: 'user' }); expect(fs.readFileSync('schema.zmodel', 'utf-8')).toBeTruthy(); }); @@ -71,7 +71,7 @@ describe('CLI Tests', () => { fs.writeFileSync('schema.zmodel', origZModelContent); createNpmrc(); const program = createProgram(); - program.parse(['init', '--tag', 'canary'], { from: 'user' }); + program.parse(['init', '--tag', 'latest'], { from: 'user' }); expect(fs.readFileSync('schema.zmodel', 'utf-8')).toEqual(origZModelContent); }); });