From deacd5443aae8d0ee6508e2c442783dcc2e9a014 Mon Sep 17 00:00:00 2001 From: Ben Holmes Date: Tue, 14 Feb 2023 09:26:30 -0500 Subject: [PATCH] Run integration config hook on `astro sync` (#6238) * refactor: move sync to core * fix: runHookConfigSetup in CLI * chore: changeset * fix: sync import on test-utils * fix: use syncCli in check --- .changeset/cold-spoons-battle.md | 5 ++++ packages/astro/src/cli/check/index.ts | 4 +-- packages/astro/src/cli/index.ts | 4 +-- packages/astro/src/core/build/index.ts | 2 +- .../astro/src/{cli => core}/sync/index.ts | 25 +++++++++++++++---- packages/astro/test/test-utils.js | 2 +- 6 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 .changeset/cold-spoons-battle.md rename packages/astro/src/{cli => core}/sync/index.ts (73%) diff --git a/.changeset/cold-spoons-battle.md b/.changeset/cold-spoons-battle.md new file mode 100644 index 000000000000..1245d2a26206 --- /dev/null +++ b/.changeset/cold-spoons-battle.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fix: run integration setup hooks during `astro sync` diff --git a/packages/astro/src/cli/check/index.ts b/packages/astro/src/cli/check/index.ts index 037525a5b2ee..069ce343c81b 100644 --- a/packages/astro/src/cli/check/index.ts +++ b/packages/astro/src/cli/check/index.ts @@ -21,8 +21,8 @@ interface Result { export async function check(settings: AstroSettings, { logging }: { logging: LogOptions }) { console.log(bold('astro check')); - const { sync } = await import('../sync/index.js'); - const syncRet = await sync(settings, { logging, fs }); + const { syncCli } = await import('../../core/sync/index.js'); + const syncRet = await syncCli(settings, { logging, fs }); // early exit on sync failure if (syncRet === 1) return syncRet; diff --git a/packages/astro/src/cli/index.ts b/packages/astro/src/cli/index.ts index 27c2a323cbb8..0cec490bd1ef 100644 --- a/packages/astro/src/cli/index.ts +++ b/packages/astro/src/cli/index.ts @@ -212,9 +212,9 @@ async function runCommand(cmd: string, flags: yargs.Arguments) { } case 'sync': { - const { sync } = await import('./sync/index.js'); + const { syncCli } = await import('../core/sync/index.js'); - const ret = await sync(settings, { logging, fs }); + const ret = await syncCli(settings, { logging, fs }); return process.exit(ret); } diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index a2baa460958c..638d78d105b9 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -81,7 +81,7 @@ class AstroBuilder { ); await runHookConfigDone({ settings: this.settings, logging }); - const { sync } = await import('../../cli/sync/index.js'); + const { sync } = await import('../sync/index.js'); const syncRet = await sync(this.settings, { logging, fs }); if (syncRet !== 0) { return process.exit(syncRet); diff --git a/packages/astro/src/cli/sync/index.ts b/packages/astro/src/core/sync/index.ts similarity index 73% rename from packages/astro/src/cli/sync/index.ts rename to packages/astro/src/core/sync/index.ts index f321b8b0ba02..f849ff6cf232 100644 --- a/packages/astro/src/cli/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -5,16 +5,31 @@ import { createServer } from 'vite'; import type { AstroSettings } from '../../@types/astro'; import { createContentTypesGenerator } from '../../content/index.js'; import { globalContentConfigObserver } from '../../content/utils.js'; -import { getTimeStat } from '../../core/build/util.js'; -import { createVite } from '../../core/create-vite.js'; -import { AstroError, AstroErrorData } from '../../core/errors/index.js'; -import { info, LogOptions } from '../../core/logger/core.js'; +import { getTimeStat } from '../build/util.js'; +import { createVite } from '../create-vite.js'; +import { runHookConfigSetup } from '../../integrations/index.js'; +import { AstroError, AstroErrorData } from '../errors/index.js'; +import { info, LogOptions } from '../logger/core.js'; import { setUpEnvTs } from '../../vite-plugin-inject-env-ts/index.js'; +type ProcessExit = 0 | 1; + +export async function syncCli( + settings: AstroSettings, + { logging, fs }: { logging: LogOptions; fs: typeof fsMod } +): Promise { + const resolvedSettings = await runHookConfigSetup({ + settings, + logging, + command: 'build', + }); + return sync(resolvedSettings, { logging, fs }); +} + export async function sync( settings: AstroSettings, { logging, fs }: { logging: LogOptions; fs: typeof fsMod } -): Promise<0 | 1> { +): Promise { const timerStart = performance.now(); // Needed to load content config const tempViteServer = await createServer( diff --git a/packages/astro/test/test-utils.js b/packages/astro/test/test-utils.js index 856c0b09fe88..bb06f90e429a 100644 --- a/packages/astro/test/test-utils.js +++ b/packages/astro/test/test-utils.js @@ -5,7 +5,7 @@ import fs from 'fs'; import os from 'os'; import stripAnsi from 'strip-ansi'; import { fileURLToPath } from 'url'; -import { sync } from '../dist/cli/sync/index.js'; +import { sync } from '../dist/core/sync/index.js'; import build from '../dist/core/build/index.js'; import { openConfig } from '../dist/core/config/config.js'; import { createSettings } from '../dist/core/config/index.js';