From fbf9b72882d9aafc5fe30823ef29616d2784eee6 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 6 Feb 2024 15:18:44 +0100 Subject: [PATCH 1/5] Add GitInfo.repositoryRoot and Configuration.configFile properties --- node-src/index.ts | 14 ++++++++++++-- node-src/lib/getConfiguration.ts | 8 +++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/node-src/index.ts b/node-src/index.ts index f0c1f32d8..a90c80781 100644 --- a/node-src/index.ts +++ b/node-src/index.ts @@ -3,7 +3,14 @@ import Listr from 'listr'; import readPkgUp from 'read-pkg-up'; import { v4 as uuid } from 'uuid'; -import { getBranch, getCommit, getSlug, getUncommittedHash, getUserEmail } from './git/git'; +import { + getBranch, + getCommit, + getRepositoryRoot, + getSlug, + getUncommittedHash, + getUserEmail, +} from './git/git'; import GraphQLClient from './io/GraphQLClient'; import HTTPClient from './io/HTTPClient'; import LoggingRenderer from './lib/LoggingRenderer'; @@ -257,6 +264,7 @@ export type GitInfo = { uncommittedHash: string; userEmail: string; userEmailHash: string; + repositoryRoot: string; }; export async function getGitInfo(): Promise { @@ -264,12 +272,13 @@ export async function getGitInfo(): Promise { try { slug = await getSlug(); } catch { - slug = '' + slug = ''; } const branch = await getBranch(); const commitInfo = await getCommit(); const userEmail = await getUserEmail(); const userEmailHash = emailHash(userEmail); + const repositoryRoot = await getRepositoryRoot(); const [ownerName, repoName, ...rest] = slug ? slug.split('/') : []; const isValidSlug = !!ownerName && !!repoName && !rest.length; @@ -282,6 +291,7 @@ export async function getGitInfo(): Promise { uncommittedHash, userEmail, userEmailHash, + repositoryRoot, }; } diff --git a/node-src/lib/getConfiguration.ts b/node-src/lib/getConfiguration.ts index 275292182..2c45903aa 100644 --- a/node-src/lib/getConfiguration.ts +++ b/node-src/lib/getConfiguration.ts @@ -42,12 +42,14 @@ const configurationSchema = z export type Configuration = z.infer; -export async function getConfiguration(configFile?: string) { +export async function getConfiguration( + configFile?: string +): Promise { const usedConfigFile = configFile || 'chromatic.config.json'; try { const rawJson = readFileSync(usedConfigFile, 'utf8'); - - return configurationSchema.parse(JSON.parse(rawJson)); + const configuration = configurationSchema.parse(JSON.parse(rawJson)); + return { configFile: usedConfigFile, ...configuration }; } catch (err) { // Config file does not exist if (err.message.match(/ENOENT/)) { From 6db401614ff05afd9da93d474ae7b77ba9abc82e Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 6 Feb 2024 15:19:00 +0100 Subject: [PATCH 2/5] Fix diagnosticsFile property key --- node-src/lib/getConfiguration.test.ts | 8 ++++---- node-src/lib/getConfiguration.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/node-src/lib/getConfiguration.test.ts b/node-src/lib/getConfiguration.test.ts index ef6a577ae..e0b7eb1c0 100644 --- a/node-src/lib/getConfiguration.test.ts +++ b/node-src/lib/getConfiguration.test.ts @@ -22,7 +22,7 @@ it('reads configuration successfully', async () => { untraced: ['untraced'], externals: ['externals'], debug: true, - diagnosticFile: 'diagnostic-file', + diagnosticsFile: 'diagnostics-file', fileHashing: true, junitReport: 'junit-report', zip: true, @@ -54,7 +54,7 @@ it('reads configuration successfully', async () => { untraced: ['untraced'], externals: ['externals'], debug: true, - diagnosticFile: 'diagnostic-file', + diagnosticsFile: 'diagnostics-file', fileHashing: true, junitReport: 'junit-report', zip: true, @@ -80,7 +80,7 @@ it('handles other side of union options', async () => { mockedReadFile.mockReturnValue( JSON.stringify({ onlyChanged: true, - diagnosticFile: true, + diagnosticsFile: true, junitReport: true, autoAcceptChanges: true, exitZeroOnChanges: true, @@ -93,7 +93,7 @@ it('handles other side of union options', async () => { expect(await getConfiguration()).toEqual({ onlyChanged: true, - diagnosticFile: true, + diagnosticsFile: true, junitReport: true, autoAcceptChanges: true, exitZeroOnChanges: true, diff --git a/node-src/lib/getConfiguration.ts b/node-src/lib/getConfiguration.ts index 2c45903aa..db525bcb0 100644 --- a/node-src/lib/getConfiguration.ts +++ b/node-src/lib/getConfiguration.ts @@ -15,7 +15,7 @@ const configurationSchema = z untraced: z.array(z.string()), externals: z.array(z.string()), debug: z.boolean(), - diagnosticFile: z.union([z.string(), z.boolean()]), + diagnosticsFile: z.union([z.string(), z.boolean()]), fileHashing: z.boolean().default(true), junitReport: z.union([z.string(), z.boolean()]), zip: z.boolean(), From 9017460be0c6bb9c3785beb017aad1dcff967aef Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 6 Feb 2024 15:27:51 +0100 Subject: [PATCH 3/5] Rename to repositoryRootDir --- node-src/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node-src/index.ts b/node-src/index.ts index a90c80781..3823bd79a 100644 --- a/node-src/index.ts +++ b/node-src/index.ts @@ -264,7 +264,7 @@ export type GitInfo = { uncommittedHash: string; userEmail: string; userEmailHash: string; - repositoryRoot: string; + repositoryRootDir: string; }; export async function getGitInfo(): Promise { @@ -278,7 +278,7 @@ export async function getGitInfo(): Promise { const commitInfo = await getCommit(); const userEmail = await getUserEmail(); const userEmailHash = emailHash(userEmail); - const repositoryRoot = await getRepositoryRoot(); + const repositoryRootDir = await getRepositoryRoot(); const [ownerName, repoName, ...rest] = slug ? slug.split('/') : []; const isValidSlug = !!ownerName && !!repoName && !rest.length; @@ -291,7 +291,7 @@ export async function getGitInfo(): Promise { uncommittedHash, userEmail, userEmailHash, - repositoryRoot, + repositoryRootDir, }; } From 9000f100b521a1f90bc3d39a09372f670d3e3a48 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 6 Feb 2024 16:27:46 +0100 Subject: [PATCH 4/5] Small fixes --- node-src/index.ts | 2 +- node-src/lib/getConfiguration.test.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/node-src/index.ts b/node-src/index.ts index 165fdf2aa..0aa23c87b 100644 --- a/node-src/index.ts +++ b/node-src/index.ts @@ -92,7 +92,7 @@ export async function run({ flags?: Flags; options?: Partial; }): Promise { - const { sessionId = uuid(), env = getEnv(), log = createLogger() } = extraOptions; + const { sessionId = uuid(), env = getEnv(), log = createLogger() } = extraOptions || {}; const pkgInfo = await readPkgUp({ cwd: process.cwd() }); if (!pkgInfo) { diff --git a/node-src/lib/getConfiguration.test.ts b/node-src/lib/getConfiguration.test.ts index e0b7eb1c0..7b9131e65 100644 --- a/node-src/lib/getConfiguration.test.ts +++ b/node-src/lib/getConfiguration.test.ts @@ -92,6 +92,7 @@ it('handles other side of union options', async () => { ); expect(await getConfiguration()).toEqual({ + configFile: 'chromatic.config.json', onlyChanged: true, diagnosticsFile: true, junitReport: true, From 58ae5e7747ebe3f2c5f96f21260f9aac9df7869d Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 6 Feb 2024 17:04:46 +0100 Subject: [PATCH 5/5] Fix test --- node-src/lib/getConfiguration.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/node-src/lib/getConfiguration.test.ts b/node-src/lib/getConfiguration.test.ts index 7b9131e65..65c95e43e 100644 --- a/node-src/lib/getConfiguration.test.ts +++ b/node-src/lib/getConfiguration.test.ts @@ -45,6 +45,7 @@ it('reads configuration successfully', async () => { ); expect(await getConfiguration()).toEqual({ + configFile: 'chromatic.config.json', projectId: 'project-id', projectToken: 'project-token',