diff --git a/.changeset/add-run-strict-flag.md b/.changeset/add-run-strict-flag.md new file mode 100644 index 000000000..14784b77e --- /dev/null +++ b/.changeset/add-run-strict-flag.md @@ -0,0 +1,4 @@ +--- +"lingo.dev": minor +--- +Add `--strict` mode to stop on the first error. diff --git a/packages/cli/src/cli/cmd/run/execute.ts b/packages/cli/src/cli/cmd/run/execute.ts index 16c63de22..65db722e4 100644 --- a/packages/cli/src/cli/cmd/run/execute.ts +++ b/packages/cli/src/cli/cmd/run/execute.ts @@ -77,7 +77,7 @@ export default async function execute(input: CmdRunContext) { return task.newListr(workerTasks, { concurrent: true, - exitOnError: false, + exitOnError: !!ctx.flags.strict, rendererOptions: { ...commonTaskRendererOptions, collapseSubtasks: true, @@ -87,7 +87,7 @@ export default async function execute(input: CmdRunContext) { }, ], { - exitOnError: false, + exitOnError: !!input.flags.strict, rendererOptions: commonTaskRendererOptions, }, ).run(input); @@ -296,6 +296,9 @@ function createWorkerTask(args: { targetLocale: assignedTask.targetLocale, } satisfies CmdRunTaskResult; } catch (error) { + if (args.ctx.flags.strict) { + throw error; + } return { status: "error", error: error as Error, diff --git a/packages/cli/src/cli/cmd/run/index.ts b/packages/cli/src/cli/cmd/run/index.ts index 8d8d80c17..10720ba63 100644 --- a/packages/cli/src/cli/cmd/run/index.ts +++ b/packages/cli/src/cli/cmd/run/index.ts @@ -112,6 +112,10 @@ export default new Command() "--sound", "Play audio feedback when translations complete (success or failure sounds)", ) + .option( + "--strict", + "Stop immediately on first error instead of continuing to process remaining buckets and locales (fail-fast mode)", + ) .action(async (args) => { let authId: string | null = null; try {