From de546e9e2e1fdd1210b21855f665cb3e245475c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D9=8A=D9=88=D8=B3=D9=81=20=D8=A7=D9=84=D8=A3=D9=88=D8=B3?= =?UTF-8?q?=D9=8A?= Date: Tue, 14 Feb 2023 18:18:22 +1000 Subject: [PATCH] Fix OpenAI API error handling when generating commit message. --- aicommits.ts | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/aicommits.ts b/aicommits.ts index fbd38e8..354ed4e 100644 --- a/aicommits.ts +++ b/aicommits.ts @@ -55,30 +55,35 @@ export async function main() { console.log( chalk.white("▲ ") + chalk.gray("Generating your AI commit message...\n") ); - const aiCommitMessage = await generateCommitMessage(prompt); + try { + const aiCommitMessage = await generateCommitMessage(prompt); + console.log( + chalk.white("▲ ") + chalk.bold("Commit message: ") + aiCommitMessage + "\n" + ); - console.log( - chalk.white("▲ ") + chalk.bold("Commit message: ") + aiCommitMessage + "\n" - ); + const confirmationMessage = await inquirer.prompt([ + { + name: "useCommitMessage", + message: "Would you like to use this commit message? (Y / n)", + choices: ["Y", "y", "n"], + default: "y", + }, + ]); - const confirmationMessage = await inquirer.prompt([ - { - name: "useCommitMessage", - message: "Would you like to use this commit message? (Y / n)", - choices: ["Y", "y", "n"], - default: "y", - }, - ]); + if (confirmationMessage.useCommitMessage === "n") { + console.log(chalk.white("▲ ") + "Commit message has not been commited."); + process.exit(1); + } + + execSync(`git commit -m "${aiCommitMessage}"`, { + stdio: "inherit", + encoding: "utf8", + }); - if (confirmationMessage.useCommitMessage === "n") { - console.log(chalk.white("▲ ") + "Commit message has not been commited."); + } catch(e) { + console.error(chalk.white("▲ ") + chalk.red(e.message)); process.exit(1); } - - execSync(`git commit -m "${aiCommitMessage}"`, { - stdio: "inherit", - encoding: "utf8", - }); } async function generateCommitMessage(prompt: string) { @@ -101,6 +106,10 @@ async function generateCommitMessage(prompt: string) { method: "POST", body: JSON.stringify(payload), }); + if(response.status !== 200) { + const errorJson: any = await response.json(); + throw new Error(`OpenAI API failed while processing the request '${errorJson?.error?.message}'`); + } const json: any = await response.json(); const aiCommit = json.choices[0].text;