Refactor aicommit.mjs to include verbose output and confirmation prompt for AI commit message
This commit is contained in:
27
aicommit.mjs
27
aicommit.mjs
@@ -1,10 +1,12 @@
|
|||||||
#!/usr/bin/env zx
|
#!/usr/bin/env zx
|
||||||
|
$.verbose = false;
|
||||||
|
|
||||||
|
console.log(chalk.white("▲ ") + chalk.green("Welcome to AICommit!"));
|
||||||
|
|
||||||
let { OPENAI_API_KEY } = await fs.readJson("./.env.json");
|
let { OPENAI_API_KEY } = await fs.readJson("./.env.json");
|
||||||
|
|
||||||
let diff = await quiet($`git diff --cached`);
|
let diff = await quiet($`git diff --cached`);
|
||||||
let prompt = `Write one detailed commit message based on the following commit: ${diff}`;
|
let prompt = `Write one detailed commit message based on the following commit. Do not preface the commit with anything, write it right away: ${diff}`;
|
||||||
echo(prompt);
|
|
||||||
|
|
||||||
const payload = {
|
const payload = {
|
||||||
model: "text-davinci-003",
|
model: "text-davinci-003",
|
||||||
@@ -18,6 +20,10 @@ const payload = {
|
|||||||
n: 1,
|
n: 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
console.log(
|
||||||
|
chalk.white("▲ ") + chalk.black("Generating your AI commit message...")
|
||||||
|
);
|
||||||
|
|
||||||
const response = await fetch("https://api.openai.com/v1/completions", {
|
const response = await fetch("https://api.openai.com/v1/completions", {
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
@@ -28,4 +34,19 @@ const response = await fetch("https://api.openai.com/v1/completions", {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const json = await response.json();
|
const json = await response.json();
|
||||||
echo(json.choices[0].text);
|
const aiCommit = json.choices[0].text;
|
||||||
|
|
||||||
|
echo(aiCommit);
|
||||||
|
|
||||||
|
let confirmationMessage = await question(
|
||||||
|
"\nWould you like to use this commit message? " + chalk.yellow("(Y/n) "),
|
||||||
|
{
|
||||||
|
choices: ["Y", "n"],
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$.verbose = true;
|
||||||
|
|
||||||
|
if (confirmationMessage !== "n") {
|
||||||
|
await $`git commit -m ${aiCommit}`;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user