diff --git a/src/commands/dataconnect-sdk-generate.ts b/src/commands/dataconnect-sdk-generate.ts index 71763253857..8892471e185 100644 --- a/src/commands/dataconnect-sdk-generate.ts +++ b/src/commands/dataconnect-sdk-generate.ts @@ -8,9 +8,15 @@ import { load } from "../dataconnect/load"; import { readFirebaseJson } from "../dataconnect/fileUtils"; import { logger } from "../logger"; +type GenerateOptions = Options & { watch?: boolean }; + export const command = new Command("dataconnect:sdk:generate") .description("generates typed SDKs for your Data Connect connectors") - .action(async (options: Options) => { + .option( + "--watch", + "watch for changes to your connector GQL files and regenerate your SDKs when updates occur", + ) + .action(async (options: GenerateOptions) => { const projectId = needProjectId(options); const services = readFirebaseJson(options.config); @@ -39,6 +45,7 @@ export const command = new Command("dataconnect:sdk:generate") const output = await DataConnectEmulator.generate({ configDir, connectorId: conn.connectorYaml.connectorId, + watch: options.watch, }); logger.info(output); logger.info(`Generated SDKs for ${conn.connectorYaml.connectorId}`); diff --git a/src/emulator/dataconnectEmulator.ts b/src/emulator/dataconnectEmulator.ts index e617a6d2dae..e1bfe2dd876 100644 --- a/src/emulator/dataconnectEmulator.ts +++ b/src/emulator/dataconnectEmulator.ts @@ -35,6 +35,7 @@ export interface DataConnectEmulatorArgs { export interface DataConnectGenerateArgs { configDir: string; connectorId: string; + watch?: boolean; } export interface DataConnectBuildArgs { @@ -184,6 +185,9 @@ export class DataConnectEmulator implements EmulatorInstance { `--config_dir=${args.configDir}`, `--connector_id=${args.connectorId}`, ]; + if (args.watch) { + cmd.push("--watch"); + } const res = childProcess.spawnSync(commandInfo.binary, cmd, { encoding: "utf-8" }); logger.info(res.stderr);