diff --git a/aicommits.ts b/aicommits.ts index 354ed4e..b4dd058 100644 --- a/aicommits.ts +++ b/aicommits.ts @@ -13,7 +13,7 @@ export async function main() { if (!OPENAI_API_KEY) { console.error( chalk.white("▲ ") + - "Please save your OpenAI API key as an env variable by doing 'export OPENAI_API_KEY=YOUR_API_KEY'" + "Please save your OpenAI API key as an env variable by doing 'export OPENAI_API_KEY=YOUR_API_KEY'", ); process.exit(1); } @@ -31,13 +31,13 @@ export async function main() { `git diff --cached . ":(exclude)package-lock.json" ":(exclude)yarn.lock" ":(exclude)pnpm-lock.yaml"`, { encoding: "utf8", - } + }, ); if (!diff) { console.log( chalk.white("▲ ") + - "No staged changes found. Make sure there are changes and run `git add .`" + "No staged changes found. Make sure there are changes and run `git add .`", ); process.exit(1); } @@ -45,20 +45,22 @@ export async function main() { // Accounting for GPT-3's input req of 4k tokens (approx 8k chars) if (diff.length > 8000) { console.log( - chalk.white("▲ ") + "The diff is too large to write a commit message." + chalk.white("▲ ") + "The diff is too large to write a commit message.", ); process.exit(1); } - let prompt = `I want you to act like a git commit message writer. I will input a git diff and your job is to convert it into a useful commit message. Do not preface the commit with anything, use the present tense, return a complete sentence, and do not repeat yourself: ${diff}`; + let prompt = + `I want you to act like a git commit message writer. I will input a git diff and your job is to convert it into a useful commit message. Do not preface the commit with anything, use the present tense, return a complete sentence, and do not repeat yourself: ${diff}`; console.log( - chalk.white("▲ ") + chalk.gray("Generating your AI commit message...\n") + chalk.white("▲ ") + chalk.gray("Generating your AI commit message...\n"), ); try { const aiCommitMessage = await generateCommitMessage(prompt); console.log( - chalk.white("▲ ") + chalk.bold("Commit message: ") + aiCommitMessage + "\n" + chalk.white("▲ ") + chalk.bold("Commit message: ") + aiCommitMessage + + "\n", ); const confirmationMessage = await inquirer.prompt([ @@ -74,13 +76,12 @@ export async function main() { console.log(chalk.white("▲ ") + "Commit message has not been commited."); process.exit(1); } - + execSync(`git commit -m "${aiCommitMessage}"`, { stdio: "inherit", encoding: "utf8", }); - - } catch(e) { + } catch (e) { console.error(chalk.white("▲ ") + chalk.red(e.message)); process.exit(1); } @@ -106,9 +107,12 @@ 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}'`); + 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();