Skip to content

Commit

Permalink
chore: rename EngineTypes to BinaryType (#7791)
Browse files Browse the repository at this point in the history
  • Loading branch information
williamluke4 committed Jun 21, 2021
1 parent b7a5a0f commit 2226db9
Show file tree
Hide file tree
Showing 15 changed files with 73 additions and 81 deletions.
14 changes: 6 additions & 8 deletions src/packages/cli/src/Version.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { getPlatform } from '@prisma/get-platform'
import {
arg,
BinaryType,
Command,
engineEnvVarMap,
EngineTypes,
format,
getConfig,
getSchema,
Expand Down Expand Up @@ -68,15 +68,13 @@ export class Version implements Command {
const platform = await getPlatform()
const useNAPI = process.env.PRISMA_FORCE_NAPI === 'true'
const introspectionEngine = await this.resolveEngine(
EngineTypes.introspectionEngine,
)
const migrationEngine = await this.resolveEngine(
EngineTypes.migrationEngine,
BinaryType.introspectionEngine,
)
const migrationEngine = await this.resolveEngine(BinaryType.migrationEngine)
const queryEngine = await this.resolveEngine(
useNAPI ? EngineTypes.libqueryEngineNapi : EngineTypes.queryEngine,
useNAPI ? BinaryType.libqueryEngineNapi : BinaryType.queryEngine,
)
const fmtBinary = await this.resolveEngine(EngineTypes.prismaFmt)
const fmtBinary = await this.resolveEngine(BinaryType.prismaFmt)

const prismaClientVersion = await getInstalledPrismaClientVersion()

Expand Down Expand Up @@ -142,7 +140,7 @@ export class Version implements Command {
)}${resolved})`
}

private async resolveEngine(binaryName: EngineTypes): Promise<BinaryInfo> {
private async resolveEngine(binaryName: BinaryType): Promise<BinaryInfo> {
const envVar = engineEnvVarMap[binaryName]
const pathFromEnv = process.env[envVar]
if (pathFromEnv && fs.existsSync(pathFromEnv)) {
Expand Down
28 changes: 14 additions & 14 deletions src/packages/fetch-engine/src/download.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,18 @@ const copyFile = promisify(fs.copyFile)
const utimes = promisify(fs.utimes)

const channel = 'master'
export enum EngineTypes {
export enum BinaryType {
queryEngine = 'query-engine',
libqueryEngineNapi = 'libquery-engine-napi',
migrationEngine = 'migration-engine',
introspectionEngine = 'introspection-engine',
prismaFmt = 'prisma-fmt',
}
export type BinaryDownloadConfiguration = {
[binary in EngineTypes]?: string
[binary in BinaryType]?: string
}
export type BinaryPaths = {
[binary in EngineTypes]?: { [binaryTarget in Platform]: string } // key: target, value: path
[binary in BinaryType]?: { [binaryTarget in Platform]: string } // key: target, value: path
}
export interface DownloadOptions {
binaries: BinaryDownloadConfiguration
Expand All @@ -58,11 +58,11 @@ export interface DownloadOptions {
}

const BINARY_TO_ENV_VAR = {
[EngineTypes.migrationEngine]: 'PRISMA_MIGRATION_ENGINE_BINARY',
[EngineTypes.queryEngine]: 'PRISMA_QUERY_ENGINE_BINARY',
[EngineTypes.libqueryEngineNapi]: 'PRISMA_QUERY_ENGINE_LIBRARY',
[EngineTypes.introspectionEngine]: 'PRISMA_INTROSPECTION_ENGINE_BINARY',
[EngineTypes.prismaFmt]: 'PRISMA_FMT_BINARY',
[BinaryType.migrationEngine]: 'PRISMA_MIGRATION_ENGINE_BINARY',
[BinaryType.queryEngine]: 'PRISMA_QUERY_ENGINE_BINARY',
[BinaryType.libqueryEngineNapi]: 'PRISMA_QUERY_ENGINE_LIBRARY',
[BinaryType.introspectionEngine]: 'PRISMA_INTROSPECTION_ENGINE_BINARY',
[BinaryType.prismaFmt]: 'PRISMA_FMT_BINARY',
}

type BinaryDownloadJob = {
Expand Down Expand Up @@ -93,7 +93,7 @@ export async function download(options: DownloadOptions): Promise<BinaryPaths> {
'Warning',
)} Precompiled binaries are not available for ${platform}. Read more about building your own binaries at https://pris.ly/d/build-binaries`,
)
} else if (EngineTypes.libqueryEngineNapi in options.binaries) {
} else if (BinaryType.libqueryEngineNapi in options.binaries) {
await isNodeAPISupported()
}

Expand All @@ -118,7 +118,7 @@ export async function download(options: DownloadOptions): Promise<BinaryPaths> {
opts.binaryTargets.map((binaryTarget) => {
const fileName = getBinaryName(binaryName, binaryTarget)
const targetFilePath =
binaryName === EngineTypes.libqueryEngineNapi
binaryName === BinaryType.libqueryEngineNapi
? path.join(targetFolder, getNapiName(binaryTarget, 'fs'))
: path.join(targetFolder, fileName)
return {
Expand Down Expand Up @@ -326,7 +326,7 @@ async function binaryNeedsToBeDownloaded(
// 3. If same platform, always check --version
if (
job.binaryTarget === nativePlatform &&
job.binaryName !== EngineTypes.libqueryEngineNapi
job.binaryName !== BinaryType.libqueryEngineNapi
) {
const works = await checkVersionCommand(binaryPath)
return !works
Expand Down Expand Up @@ -354,7 +354,7 @@ export async function checkVersionCommand(
}

export function getBinaryName(binaryName: string, platform: Platform): string {
if (binaryName === EngineTypes.libqueryEngineNapi) {
if (binaryName === BinaryType.libqueryEngineNapi) {
return `${getNapiName(platform, 'url')}`
}
const extension = platform === 'windows' ? '.exe' : ''
Expand Down Expand Up @@ -509,8 +509,8 @@ function engineTypeToBinaryType(
engineType: string,
binaryTarget: string,
): string {
if (EngineTypes[engineType]) {
return EngineTypes[engineType]
if (BinaryType[engineType]) {
return BinaryType[engineType]
}
if (engineType === 'native') {
return binaryTarget
Expand Down
6 changes: 3 additions & 3 deletions src/packages/fetch-engine/src/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import fs from 'fs'
import makeDir from 'make-dir'
import os from 'os'
import path from 'path'
import { EngineTypes } from './download'
import { BinaryType } from './download'

const debug = Debug('prisma:cache-dir')

Expand Down Expand Up @@ -63,10 +63,10 @@ export function getDownloadUrl(
const baseUrl =
process.env.PRISMA_BINARIES_MIRROR || 'https://binaries.prisma.sh'
const finalExtension =
platform === 'windows' && EngineTypes.libqueryEngineNapi !== binaryName
platform === 'windows' && BinaryType.libqueryEngineNapi !== binaryName
? `.exe${extension}`
: extension
if (binaryName === EngineTypes.libqueryEngineNapi) {
if (binaryName === BinaryType.libqueryEngineNapi) {
binaryName = getNapiName(platform, 'url')
}

Expand Down
6 changes: 2 additions & 4 deletions src/packages/migrate/src/MigrateEngine.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import Debug from '@prisma/debug'
import { ErrorArea, resolveBinary, RustPanic, EngineTypes } from '@prisma/sdk'
import { BinaryType, ErrorArea, resolveBinary, RustPanic } from '@prisma/sdk'
import chalk from 'chalk'
import { ChildProcess, spawn } from 'child_process'
import fs from 'fs'
import { EngineArgs, EngineResults } from './types'
import byline from './utils/byline'
import { now } from './utils/now'
const debugRpc = Debug('prisma:migrateEngine:rpc')
const debugStderr = Debug('prisma:migrateEngine:stderr')
const debugStdin = Debug('prisma:migrateEngine:stdin')
Expand Down Expand Up @@ -188,7 +186,7 @@ export class MigrateEngine {
try {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { PWD, ...rest } = process.env
const binaryPath = await resolveBinary(EngineTypes.migrationEngine)
const binaryPath = await resolveBinary(BinaryType.migrationEngine)
debugRpc('starting migration engine with binary: ' + binaryPath)
const args = ['-d', this.schemaPath]
if (
Expand Down
8 changes: 2 additions & 6 deletions src/packages/sdk/src/IntrospectionEngine.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import Debug from '@prisma/debug'
import { EngineTypes } from '@prisma/fetch-engine'
import { BinaryType } from '@prisma/fetch-engine'
import chalk from 'chalk'
import { ChildProcess, spawn } from 'child_process'
import fs from 'fs'
import { ErrorArea, RustPanic } from './panic'
import { resolveBinary } from './resolveBinary'
import byline from './utils/byline'
import { now } from './utils/now'
const debugCli = Debug('prisma:introspectionEngine:cli')
const debugRpc = Debug('prisma:introspectionEngine:rpc')
const debugStderr = Debug('prisma:introspectionEngine:stderr')
Expand Down Expand Up @@ -274,9 +272,7 @@ export class IntrospectionEngine {
// eslint-disable-next-line no-async-promise-executor, @typescript-eslint/no-misused-promises
async (resolve, reject): Promise<void> => {
try {
const binaryPath = await resolveBinary(
EngineTypes.introspectionEngine,
)
const binaryPath = await resolveBinary(BinaryType.introspectionEngine)
debugRpc('starting introspection engine with binary: ' + binaryPath)

this.child = spawn(binaryPath, {
Expand Down
12 changes: 6 additions & 6 deletions src/packages/sdk/src/__tests__/engineCommands.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { enginesVersion } from '@prisma/engines'
import fs from 'fs'
import path from 'path'
import stripAnsi from 'strip-ansi'
import { EngineTypes } from '..'
import { BinaryType } from '..'
import { formatSchema, getConfig, getDMMF, getVersion } from '../'
jest.setTimeout(15000)

Expand Down Expand Up @@ -425,35 +425,35 @@ describe('getVersion', () => {
test('Introspection Engine', async () => {
const introspectionEngineVersion = await getVersion(
undefined,
EngineTypes.introspectionEngine,
BinaryType.introspectionEngine,
)
expect(introspectionEngineVersion.split(' ')[1]).toMatch(enginesVersion)
})

test('Migration Engine', async () => {
const migrationEngineVersion = await getVersion(
undefined,
EngineTypes.migrationEngine,
BinaryType.migrationEngine,
)
expect(migrationEngineVersion.split(' ')[1]).toMatch(enginesVersion)
})

test('Prisma Fmt', async () => {
const prismaFmtVersion = await getVersion(undefined, EngineTypes.prismaFmt)
const prismaFmtVersion = await getVersion(undefined, BinaryType.prismaFmt)
expect(prismaFmtVersion.split(' ')[1]).toMatch(enginesVersion)
})

testIf(process.env.PRISMA_FORCE_NAPI !== 'true')('Query Engine', async () => {
const queryEngineVersion = await getVersion(
undefined,
EngineTypes.queryEngine,
BinaryType.queryEngine,
)
expect(queryEngineVersion.split(' ')[1]).toMatch(enginesVersion)
})
testIf(process.env.PRISMA_FORCE_NAPI === 'true')('N-API Engine', async () => {
const libqueryEngineNapiVersion = await getVersion(
undefined,
EngineTypes.libqueryEngineNapi,
BinaryType.libqueryEngineNapi,
)
expect(libqueryEngineNapiVersion.split(' ')[1]).toMatch(enginesVersion)
})
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { EngineTypes } from '@prisma/fetch-engine'
import { BinaryType } from '@prisma/fetch-engine'
import { getPlatform } from '@prisma/get-platform'
import path from 'path'
import stripAnsi from 'strip-ansi'
Expand Down Expand Up @@ -520,11 +520,11 @@ describe('getGenerators', () => {
},
}

const migrationEngine = await resolveBinary(EngineTypes.migrationEngine)
const migrationEngine = await resolveBinary(BinaryType.migrationEngine)
const queryEngine = await resolveBinary(
process.env.PRISMA_FORCE_NAPI === 'true'
? EngineTypes.libqueryEngineNapi
: EngineTypes.queryEngine,
? BinaryType.libqueryEngineNapi
: BinaryType.queryEngine,
)

const generators = await getGenerators({
Expand Down
4 changes: 2 additions & 2 deletions src/packages/sdk/src/engine-commands/formatSchema.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Debug from '@prisma/debug'
import { EngineTypes } from '@prisma/fetch-engine'
import { BinaryType } from '@prisma/fetch-engine'
import execa from 'execa'
import fs from 'fs'
import { resolveBinary } from '../resolveBinary'
Expand All @@ -24,7 +24,7 @@ export async function formatSchema({
throw new Error(`Parameter schema or schemaPath must be passed.`)
}

const prismaFmtPath = await resolveBinary(EngineTypes.prismaFmt)
const prismaFmtPath = await resolveBinary(BinaryType.prismaFmt)
const showColors = !process.env.NO_COLOR && process.stdout.isTTY

const options = {
Expand Down
6 changes: 3 additions & 3 deletions src/packages/sdk/src/engine-commands/getConfig.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Debug from '@prisma/debug'
import { NApiEngineTypes } from '@prisma/engine-core'
import { EngineTypes } from '@prisma/fetch-engine'
import { BinaryType } from '@prisma/fetch-engine'
import { DataSource, GeneratorConfig } from '@prisma/generator-helper'
import chalk from 'chalk'
import execa from 'execa'
Expand Down Expand Up @@ -65,7 +65,7 @@ async function getConfigNAPI(
): Promise<ConfigMetaFormat> {
let data: ConfigMetaFormat | undefined
const queryEnginePath = await resolveBinary(
EngineTypes.libqueryEngineNapi,
BinaryType.libqueryEngineNapi,
options.prismaPath,
)
await isNodeAPISupported()
Expand Down Expand Up @@ -105,7 +105,7 @@ async function getConfigBinary(
let data: ConfigMetaFormat | undefined

const queryEnginePath = await resolveBinary(
EngineTypes.queryEngine,
BinaryType.queryEngine,
options.prismaPath,
)
debug(`Using Query Engine Binary at: ${queryEnginePath}`)
Expand Down
6 changes: 3 additions & 3 deletions src/packages/sdk/src/engine-commands/getDmmf.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Debug from '@prisma/debug'
import { NApiEngineTypes } from '@prisma/engine-core'
import { EngineTypes } from '@prisma/fetch-engine'
import { BinaryType } from '@prisma/fetch-engine'
import { DataSource, DMMF, GeneratorConfig } from '@prisma/generator-helper'
import chalk from 'chalk'
import execa, { ExecaChildProcess, ExecaReturnValue } from 'execa'
Expand Down Expand Up @@ -47,7 +47,7 @@ export async function getDMMF(options: GetDMMFOptions): Promise<DMMF.Document> {

async function getDmmfNapi(options: GetDMMFOptions): Promise<DMMF.Document> {
const queryEnginePath = await resolveBinary(
EngineTypes.libqueryEngineNapi,
BinaryType.libqueryEngineNapi,
options.prismaPath,
)
await isNodeAPISupported()
Expand All @@ -70,7 +70,7 @@ async function getDmmfNapi(options: GetDMMFOptions): Promise<DMMF.Document> {
async function getDmmfBinary(options: GetDMMFOptions): Promise<DMMF.Document> {
let result: ExecaChildProcess<string> | undefined | ExecaReturnValue<string>
const queryEnginePath = await resolveBinary(
EngineTypes.queryEngine,
BinaryType.queryEngine,
options.prismaPath,
)
debug(`Using Query Engine Binary at: ${queryEnginePath}`)
Expand Down
6 changes: 3 additions & 3 deletions src/packages/sdk/src/engine-commands/getVersion.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Debug from '@prisma/debug'
import { NApiEngineTypes } from '@prisma/engine-core'
import { EngineTypes } from '@prisma/fetch-engine'
import { BinaryType } from '@prisma/fetch-engine'
import { isNodeAPISupported } from '@prisma/get-platform'
import execa from 'execa'
import { resolveBinary } from '../resolveBinary'
Expand All @@ -11,10 +11,10 @@ const MAX_BUFFER = 1_000_000_000

export async function getVersion(
enginePath?: string,
binaryName: EngineTypes = EngineTypes.queryEngine,
binaryName: BinaryType = BinaryType.queryEngine,
): Promise<string> {
enginePath = await resolveBinary(binaryName, enginePath)
if (binaryName === EngineTypes.libqueryEngineNapi) {
if (binaryName === BinaryType.libqueryEngineNapi) {
await isNodeAPISupported()

const QE = require(enginePath) as NApiEngineTypes.NAPI
Expand Down

0 comments on commit 2226db9

Please sign in to comment.