Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,45 @@ | ||
// Jest Snapshot v1, https://goo.gl/fbAQLP | ||
|
||
exports[`should display a update message w/ dev tag 1`] = ` | ||
exports[`update available message dev tag - major 1`] = ` | ||
┌─────────────────────────────────────────────────────────┐ | ||
│ Update available 2.6.1 -> 3.0.1 │ | ||
│ │ | ||
│ This is a major update - please follow the guide at │ | ||
│ https://pris.ly/d/major-version-upgrade │ | ||
│ │ | ||
│ Run the following to update │ | ||
│ npm i --save-dev prisma@dev │ | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong. |
||
│ npm i @prisma/client@dev │ | ||
└─────────────────────────────────────────────────────────┘ | ||
`; | ||
|
||
exports[`update available message dev tag - minor 1`] = ` | ||
┌─────────────────────────────────────────────────────────┐ | ||
│ Update available 2.6.1 -> 2.16.0 │ | ||
│ Run the following to update │ | ||
│ npm i --save-dev prisma@dev │ | ||
│ npm i @prisma/client@dev │ | ||
│ npm i --save-dev prisma@dev │ | ||
│ npm i @prisma/client@dev │ | ||
└─────────────────────────────────────────────────────────┘ | ||
`; | ||
|
||
exports[`update available message latest tag - major 1`] = ` | ||
┌─────────────────────────────────────────────────────────┐ | ||
│ Update available 2.6.1 -> 3.0.0 │ | ||
│ │ | ||
│ This is a major update - please follow the guide at │ | ||
│ https://pris.ly/d/major-version-upgrade │ | ||
│ │ | ||
│ Run the following to update │ | ||
│ npm i --save-dev prisma@latest │ | ||
│ npm i @prisma/client@latest │ | ||
└─────────────────────────────────────────────────────────┘ | ||
`; | ||
|
||
exports[`should display a update message w/o tag 1`] = ` | ||
exports[`update available message latest tag - minor 1`] = ` | ||
┌─────────────────────────────────────────────────────────┐ | ||
│ Update available 2.6.1 -> 2.16.0 │ | ||
│ Run the following to update │ | ||
│ npm i --save-dev prisma │ | ||
│ npm i @prisma/client │ | ||
│ npm i --save-dev prisma@latest │ | ||
│ npm i @prisma/client@latest │ | ||
└─────────────────────────────────────────────────────────┘ | ||
`; |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,38 +4,74 @@ import { consoleContext, Context } from './__helpers__/context' | |
|
||
const ctx = Context.new().add(consoleContext()).assemble() | ||
|
||
it('should display a update message w/ dev tag', () => { | ||
printUpdateMessage({ | ||
status: 'ok', | ||
// @ts-ignore | ||
data: { | ||
previous_version: '2.6.1', | ||
current_version: '2.16.0', | ||
package: 'prisma', | ||
release_tag: 'dev', | ||
}, | ||
describe('update available message', () => { | ||
it('dev tag - minor', () => { | ||
printUpdateMessage({ | ||
status: 'ok', | ||
// @ts-ignore | ||
data: { | ||
previous_version: '2.6.1', | ||
This comment has been minimized.
Sorry, something went wrong.
janpio
Member
|
||
current_version: '2.16.0', | ||
package: 'prisma', | ||
release_tag: 'dev', | ||
}, | ||
}) | ||
const message = ctx.mocked['console.error'].mock.calls[0][0] | ||
expect(message).toContain('npm i --save-dev prisma@dev') | ||
expect(message).toContain('npm i @prisma/client@dev') | ||
expect(message).toMatchSnapshot() | ||
}) | ||
// @ts-ignore | ||
const message = ctx.mocked['console.error'].mock.calls[0][0] | ||
|
||
// process.stdout.write(message + "\n") | ||
expect(message).toMatchSnapshot() | ||
}) | ||
it('dev tag - major', () => { | ||
printUpdateMessage({ | ||
status: 'ok', | ||
// @ts-ignore | ||
data: { | ||
previous_version: '2.6.1', | ||
current_version: '3.0.1', | ||
package: 'prisma', | ||
release_tag: 'dev', | ||
}, | ||
}) | ||
const message = ctx.mocked['console.error'].mock.calls[0][0] | ||
expect(message).toContain('This is a major update') | ||
expect(message).toContain('npm i --save-dev prisma@dev') | ||
expect(message).toContain('npm i @prisma/client@dev') | ||
expect(message).toMatchSnapshot() | ||
}) | ||
|
||
it('should display a update message w/o tag', () => { | ||
printUpdateMessage({ | ||
status: 'ok', | ||
// @ts-ignore | ||
data: { | ||
previous_version: '2.6.1', | ||
current_version: '2.16.0', | ||
package: 'prisma', | ||
release_tag: 'latest', | ||
}, | ||
it('latest tag - minor', () => { | ||
printUpdateMessage({ | ||
status: 'ok', | ||
// @ts-ignore | ||
data: { | ||
previous_version: '2.6.1', | ||
current_version: '2.16.0', | ||
package: 'prisma', | ||
release_tag: 'latest', | ||
}, | ||
}) | ||
const message = ctx.mocked['console.error'].mock.calls[0][0] | ||
expect(message).toContain('npm i --save-dev prisma@latest') | ||
expect(message).toContain('npm i @prisma/client@latest') | ||
expect(message).toMatchSnapshot() | ||
}) | ||
// @ts-ignore | ||
const message = ctx.mocked['console.error'].mock.calls[0][0] | ||
|
||
// process.stdout.write(message + "\n") | ||
expect(message).toMatchSnapshot() | ||
it('latest tag - major', () => { | ||
printUpdateMessage({ | ||
status: 'ok', | ||
// @ts-ignore | ||
data: { | ||
previous_version: '2.6.1', | ||
current_version: '3.0.0', | ||
package: 'prisma', | ||
release_tag: 'latest', | ||
}, | ||
}) | ||
const message = ctx.mocked['console.error'].mock.calls[0][0] | ||
expect(message).toContain('This is a major update') | ||
expect(message).toContain('npm i --save-dev prisma@latest') | ||
expect(message).toContain('npm i @prisma/client@latest') | ||
expect(message).toMatchSnapshot() | ||
}) | ||
}) |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,30 +10,47 @@ export function printUpdateMessage(checkResult: { | |
}): void { | ||
let boxHeight = 4 | ||
let majorText = '' | ||
if (checkResult.data.previous_version.split('.')[0] < checkResult.data.current_version.split('.')[0]) { | ||
majorText = `\nThis is a major update - please follow the guide at\nhttps://pris.ly/d/major-version-upgrade\n\n` | ||
boxHeight = boxHeight + 4 | ||
} | ||
let boxText = `\n${chalk.blue('Update available')} ${ | ||
checkResult.data.previous_version | ||
} -> ${checkResult.data.current_version}\n${majorText}Run the following to update | ||
${chalk.bold( | ||
makeInstallCommand(checkResult.data.package, checkResult.data.release_tag), | ||
)} | ||
${chalk.bold( | ||
makeInstallCommand('@prisma/client', checkResult.data.release_tag, { | ||
canBeGlobal: false, | ||
canBeDev: false, | ||
}), | ||
)}` | ||
console.error( | ||
drawBox({ | ||
height: boxHeight, | ||
width: 59, | ||
str: boxText, | ||
horizontalPadding: 2, | ||
}), | ||
|
||
const currentVersionInstalled = checkResult.data.previous_version | ||
const latestVersionAvailable = checkResult.data.current_version | ||
|
||
const prismaCLICommand = makeInstallCommand( | ||
checkResult.data.package, | ||
checkResult.data.release_tag, | ||
) | ||
const prismaClientCommand = makeInstallCommand( | ||
'@prisma/client', | ||
checkResult.data.release_tag, | ||
{ | ||
canBeGlobal: false, | ||
canBeDev: false, | ||
}, | ||
) | ||
|
||
try { | ||
const [majorInstalled] = currentVersionInstalled.split('.') | ||
const [majorLatest] = latestVersionAvailable.split('.') | ||
|
||
if (majorInstalled < majorLatest) { | ||
majorText = `\nThis is a major update - please follow the guide at\nhttps://pris.ly/d/major-version-upgrade\n\n` | ||
boxHeight = boxHeight + 4 | ||
} | ||
} catch (e) { } | ||
|
||
const boxText = `\n${chalk.blue( | ||
'Update available', | ||
)} ${currentVersionInstalled} -> ${latestVersionAvailable}\n${majorText}Run the following to update | ||
${chalk.bold(prismaCLICommand)} | ||
This comment has been minimized.
Sorry, something went wrong. |
||
${chalk.bold(prismaClientCommand)}` | ||
|
||
const boxedMessage = drawBox({ | ||
height: boxHeight, | ||
width: 59, | ||
str: boxText, | ||
horizontalPadding: 2, | ||
}) | ||
|
||
console.error(boxedMessage) | ||
} | ||
|
||
function makeInstallCommand( | ||
|
@@ -63,7 +80,10 @@ function makeInstallCommand( | |
} else { | ||
command = `npm i ${packageName}` | ||
} | ||
|
||
// always output tag (so major upgrades work) | ||
// see https://www.npmjs.com/package/prisma?activeTab=versions | ||
// could be latest, dev, patch-dev, integration | ||
This comment has been minimized.
Sorry, something went wrong.
janpio
Member
|
||
command += `@${tag}` | ||
|
||
return command | ||
|
Seems we lost the leadings 2 spaces here :( Probably when I extracted the string. We should add those back.