Skip to content

Commit 61398d5

Browse files
committed
chore: wip
1 parent 40f51c3 commit 61398d5

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

.stacks/core/buddy/src/cli.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
#!/usr/bin/env node
2+
import { readFileSync } from 'node:fs'
3+
import { execSync } from 'node:child_process'
24
import { runAction } from '@stacksjs/actions'
35
import { command, log } from '@stacksjs/cli'
46
import { env, frameworkVersion, isProjectCreated } from '@stacksjs/utils'
57
import { projectPath } from '@stacksjs/path'
68
import { Action } from '@stacksjs/types'
9+
import semver from 'semver'
710
import { build, changelog, clean, commit, create, dev, example, fresh, generate, key, lint, make, migrate, preinstall, prepublish, release, seed, setup, test, update } from './commands'
811

912
const cli = command('stacks')
@@ -14,6 +17,7 @@ process.on('unhandledRejection', errorHandler)
1417

1518
async function main() {
1619
// the following commands are not dependent on the project being initialized
20+
installIfVersionMismatch()
1721
await setup(cli)
1822
await key(cli)
1923

@@ -62,6 +66,20 @@ async function main() {
6266

6367
main()
6468

69+
function installIfVersionMismatch(): void {
70+
const packageJson = JSON.parse(readFileSync('./package.json', 'utf8'))
71+
const requiredVersion = packageJson.engines.pnpm
72+
const installedVersion = execSync('pnpm -v', { encoding: 'utf8' }).trim()
73+
74+
if (!semver.satisfies(installedVersion, requiredVersion)) {
75+
console.log(`Installed pnpm version (${installedVersion}) does not satisfy required version (${requiredVersion}). Installing...`)
76+
execSync('pnpm i -g pnpm', { stdio: 'inherit' })
77+
}
78+
else {
79+
console.log(`Installed pnpm version (${installedVersion}) satisfies required version (${requiredVersion}).`)
80+
}
81+
}
82+
6583
function errorHandler(error: Error): void {
6684
log.error(error)
6785
process.exit()

0 commit comments

Comments
 (0)