mirror of
https://github.com/di-sukharev/opencommit.git
synced 2026-01-14 08:08:05 -05:00
Compare commits
15 Commits
github-act
...
2.1.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
44c9d48eae | ||
|
|
702eab9ec0 | ||
|
|
e8be3858ab | ||
|
|
50e7cd3576 | ||
|
|
4f57201e98 | ||
|
|
009462f92c | ||
|
|
34775e9e69 | ||
|
|
3f3043c48e | ||
|
|
820422760a | ||
|
|
b40657c1a7 | ||
|
|
dcd8f52be3 | ||
|
|
0eff198eb9 | ||
|
|
b345eee815 | ||
|
|
cba599337d | ||
|
|
4e25f1460a |
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"trailingComma": "none",
|
"singleQuote": true,
|
||||||
"singleQuote": true
|
"trailingComma": "none"
|
||||||
}
|
}
|
||||||
|
|||||||
35
README.md
35
README.md
@@ -37,6 +37,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
opencommit:
|
opencommit:
|
||||||
|
timeout-minutes: 10
|
||||||
name: OpenCommit
|
name: OpenCommit
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions: write-all
|
permissions: write-all
|
||||||
@@ -48,7 +49,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- uses: di-sukharev/opencommit@github-action-v1.0.1
|
- uses: di-sukharev/opencommit@github-action-v1.0.4
|
||||||
with:
|
with:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
@@ -75,7 +76,7 @@ Interactive rebase (`rebase -i`) changes commit SHA, so commit history in remote
|
|||||||
|
|
||||||
## Setup OpenCommit as a CLI
|
## Setup OpenCommit as a CLI
|
||||||
|
|
||||||
You can use OpenCommit by simply running it via CLI like this `oc`. 2 seconds and your staged changes are committed with a meaningful message.
|
You can use OpenCommit by simply running it via CLI like this `oco`. 2 seconds and your staged changes are committed with a meaningful message.
|
||||||
|
|
||||||
1. Install OpenCommit globally to use in any repository:
|
1. Install OpenCommit globally to use in any repository:
|
||||||
|
|
||||||
@@ -102,7 +103,7 @@ git add <files...>
|
|||||||
opencommit
|
opencommit
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also use the `oc` shortcut:
|
You can also use the `oco` shortcut:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git add <files...>
|
git add <files...>
|
||||||
@@ -132,19 +133,19 @@ Local config still has more priority as Global config, but you may set `OCO_MODE
|
|||||||
Simply run any of the variable above like this:
|
Simply run any of the variable above like this:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
oc config set OCO_OPENAI_API_KEY=gpt-4
|
oco config set OCO_OPENAI_API_KEY=gpt-4
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure [GitMoji](https://gitmoji.dev/) to preface a message.
|
Configure [GitMoji](https://gitmoji.dev/) to preface a message.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
oc config set OCO_EMOJI=true
|
oco config set OCO_EMOJI=true
|
||||||
```
|
```
|
||||||
|
|
||||||
To remove preface emoji:
|
To remove preface emoji:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
oc config set OCO_EMOJI=false
|
oco config set OCO_EMOJI=false
|
||||||
```
|
```
|
||||||
|
|
||||||
### Switch to GPT-4
|
### Switch to GPT-4
|
||||||
@@ -154,7 +155,7 @@ By default OpenCommit uses GPT-3.5-turbo (ChatGPT).
|
|||||||
You may switch to GPT-4 which performs better, but costs ~x15 times more 🤠
|
You may switch to GPT-4 which performs better, but costs ~x15 times more 🤠
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
oc config set OCO_MODEL=gpt-4
|
oco config set OCO_MODEL=gpt-4
|
||||||
```
|
```
|
||||||
|
|
||||||
Make sure you do lowercase `gpt-4` and you have API access to the 4th model. Even if you have ChatGPT+ it doesn't necessarily mean that you have API access to GPT-4.
|
Make sure you do lowercase `gpt-4` and you have API access to the 4th model. Even if you have ChatGPT+ it doesn't necessarily mean that you have API access to GPT-4.
|
||||||
@@ -165,14 +166,14 @@ To globally specify the language used to generate commit messages:
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
# de, German ,Deutsch
|
# de, German ,Deutsch
|
||||||
oc config set OCO_LANGUAGE=de
|
oco config set OCO_LANGUAGE=de
|
||||||
oc config set OCO_LANGUAGE=German
|
oco config set OCO_LANGUAGE=German
|
||||||
oc config set OCO_LANGUAGE=Deutsch
|
oco config set OCO_LANGUAGE=Deutsch
|
||||||
|
|
||||||
# fr, French, française
|
# fr, French, française
|
||||||
oc config set OCO_LANGUAGE=fr
|
oco config set OCO_LANGUAGE=fr
|
||||||
oc config set OCO_LANGUAGE=French
|
oco config set OCO_LANGUAGE=French
|
||||||
oc config set OCO_LANGUAGE=française
|
oco config set OCO_LANGUAGE=française
|
||||||
```
|
```
|
||||||
|
|
||||||
The default language set is **English**
|
The default language set is **English**
|
||||||
@@ -180,10 +181,10 @@ All available languages are currently listed in the [i18n](https://github.com/di
|
|||||||
|
|
||||||
### Git flags
|
### Git flags
|
||||||
|
|
||||||
The `opencommit` or `oc` commands can be used in place of the `git commit -m "${generatedMessage}"` command. This means that any regular flags that are used with the `git commit` command will also be applied when using `opencommit` or `oc`.
|
The `opencommit` or `oco` commands can be used in place of the `git commit -m "${generatedMessage}"` command. This means that any regular flags that are used with the `git commit` command will also be applied when using `opencommit` or `oco`.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
oc --no-verify
|
oco --no-verify
|
||||||
```
|
```
|
||||||
|
|
||||||
is translated to :
|
is translated to :
|
||||||
@@ -212,13 +213,13 @@ You can set OpenCommit as Git [`prepare-commit-msg`](https://git-scm.com/docs/gi
|
|||||||
To set the hook:
|
To set the hook:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
oc hook set
|
oco hook set
|
||||||
```
|
```
|
||||||
|
|
||||||
To unset the hook:
|
To unset the hook:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
oc hook unset
|
oco hook unset
|
||||||
```
|
```
|
||||||
|
|
||||||
To use the hook:
|
To use the hook:
|
||||||
|
|||||||
59
out/cli.cjs
59
out/cli.cjs
@@ -16272,7 +16272,7 @@ function G3(t, e2) {
|
|||||||
// package.json
|
// package.json
|
||||||
var package_default = {
|
var package_default = {
|
||||||
name: "opencommit",
|
name: "opencommit",
|
||||||
version: "2.0.16",
|
version: "2.1.0",
|
||||||
description: "Auto-generate impressive commits in 1 second. Killing lame commits with AI \u{1F92F}\u{1F52B}",
|
description: "Auto-generate impressive commits in 1 second. Killing lame commits with AI \u{1F92F}\u{1F52B}",
|
||||||
keywords: [
|
keywords: [
|
||||||
"git",
|
"git",
|
||||||
@@ -16289,7 +16289,6 @@ var package_default = {
|
|||||||
main: "cli.js",
|
main: "cli.js",
|
||||||
bin: {
|
bin: {
|
||||||
opencommit: "./out/cli.cjs",
|
opencommit: "./out/cli.cjs",
|
||||||
oc: "./out/cli.cjs",
|
|
||||||
oco: "./out/cli.cjs"
|
oco: "./out/cli.cjs"
|
||||||
},
|
},
|
||||||
repository: {
|
repository: {
|
||||||
@@ -16314,7 +16313,8 @@ var package_default = {
|
|||||||
start: "node ./out/cli.cjs",
|
start: "node ./out/cli.cjs",
|
||||||
dev: "ts-node ./src/cli.ts",
|
dev: "ts-node ./src/cli.ts",
|
||||||
build: "rimraf out && node esbuild.config.js",
|
build: "rimraf out && node esbuild.config.js",
|
||||||
deploy: "npm run build && npm version patch && npm publish --tag latest",
|
deploy: "npm run build:push && npm version patch && git push origin --tags && npm publish --tag latest",
|
||||||
|
"build:push": "npm run build && git add . && git commit -m 'build' && git push",
|
||||||
lint: "eslint src --ext ts && tsc --noEmit",
|
lint: "eslint src --ext ts && tsc --noEmit",
|
||||||
format: "prettier --write src"
|
format: "prettier --write src"
|
||||||
},
|
},
|
||||||
@@ -17643,7 +17643,7 @@ var configValidators = {
|
|||||||
}
|
}
|
||||||
validateConfig(
|
validateConfig(
|
||||||
"OCO_OPENAI_MAX_TOKENS" /* OCO_OPENAI_MAX_TOKENS */,
|
"OCO_OPENAI_MAX_TOKENS" /* OCO_OPENAI_MAX_TOKENS */,
|
||||||
typeof value === "number",
|
value ? typeof value === "number" : void 0,
|
||||||
"Must be a number"
|
"Must be a number"
|
||||||
);
|
);
|
||||||
return value;
|
return value;
|
||||||
@@ -17674,8 +17674,8 @@ var configValidators = {
|
|||||||
},
|
},
|
||||||
["OCO_MODEL" /* OCO_MODEL */](value) {
|
["OCO_MODEL" /* OCO_MODEL */](value) {
|
||||||
validateConfig(
|
validateConfig(
|
||||||
"OCO_OPENAI_BASE_PATH" /* OCO_OPENAI_BASE_PATH */,
|
"OCO_MODEL" /* OCO_MODEL */,
|
||||||
value === "gpt-3.5-turbo" || value === "gpt-4",
|
["gpt-3.5-turbo", "gpt-4"].includes(value),
|
||||||
`${value} is not supported yet, use 'gpt-4' or 'gpt-3.5-turbo' (default)`
|
`${value} is not supported yet, use 'gpt-4' or 'gpt-3.5-turbo' (default)`
|
||||||
);
|
);
|
||||||
return value;
|
return value;
|
||||||
@@ -17685,12 +17685,12 @@ var configPath = (0, import_path.join)((0, import_os.homedir)(), ".opencommit");
|
|||||||
var getConfig = () => {
|
var getConfig = () => {
|
||||||
const configFromEnv = {
|
const configFromEnv = {
|
||||||
OCO_OPENAI_API_KEY: process.env.OCO_OPENAI_API_KEY,
|
OCO_OPENAI_API_KEY: process.env.OCO_OPENAI_API_KEY,
|
||||||
OCO_OPENAI_MAX_TOKENS: Number(process.env.OCO_OPENAI_MAX_TOKENS),
|
OCO_OPENAI_MAX_TOKENS: process.env.OCO_OPENAI_MAX_TOKENS ? Number(process.env.OCO_OPENAI_MAX_TOKENS) : void 0,
|
||||||
OCO_OPENAI_BASE_PATH: process.env.OCO_OPENAI_BASE_PATH,
|
OCO_OPENAI_BASE_PATH: process.env.OCO_OPENAI_BASE_PATH,
|
||||||
OCO_DESCRIPTION: process.env.OCO_DESCRIPTION === "true" ? true : false,
|
OCO_DESCRIPTION: process.env.OCO_DESCRIPTION === "true" ? true : false,
|
||||||
OCO_EMOJI: process.env.OCO_EMOJI === "true" ? true : false,
|
OCO_EMOJI: process.env.OCO_EMOJI === "true" ? true : false,
|
||||||
OCO_MODEL: process.env.OCO_MODEL,
|
OCO_MODEL: process.env.OCO_MODEL || "gpt-3.5-turbo",
|
||||||
OCO_LANGUAGE: process.env.OCO_LANGUAGE
|
OCO_LANGUAGE: process.env.OCO_LANGUAGE || "en"
|
||||||
};
|
};
|
||||||
const configExists = (0, import_fs.existsSync)(configPath);
|
const configExists = (0, import_fs.existsSync)(configPath);
|
||||||
if (!configExists)
|
if (!configExists)
|
||||||
@@ -17698,6 +17698,10 @@ var getConfig = () => {
|
|||||||
const configFile = (0, import_fs.readFileSync)(configPath, "utf8");
|
const configFile = (0, import_fs.readFileSync)(configPath, "utf8");
|
||||||
const config4 = (0, import_ini.parse)(configFile);
|
const config4 = (0, import_ini.parse)(configFile);
|
||||||
for (const configKey of Object.keys(config4)) {
|
for (const configKey of Object.keys(config4)) {
|
||||||
|
if (!config4[configKey] || ["null", "undefined"].includes(config4[configKey])) {
|
||||||
|
config4[configKey] = void 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const validator = configValidators[configKey];
|
const validator = configValidators[configKey];
|
||||||
const validValue = validator(
|
const validValue = validator(
|
||||||
@@ -21681,7 +21685,7 @@ var [command, mode] = process.argv.slice(2);
|
|||||||
if (!apiKey && command !== "config" && mode !== "set" /* set */) {
|
if (!apiKey && command !== "config" && mode !== "set" /* set */) {
|
||||||
ae("opencommit");
|
ae("opencommit");
|
||||||
ce(
|
ce(
|
||||||
"OCO_OPENAI_API_KEY is not set, please run `oc config set OCO_OPENAI_API_KEY=<your token>. Make sure you add payment details, so API works.`"
|
"OCO_OPENAI_API_KEY is not set, please run `oco config set OCO_OPENAI_API_KEY=<your token>. Make sure you add payment details, so API works.`"
|
||||||
);
|
);
|
||||||
ce(
|
ce(
|
||||||
"For help look into README https://github.com/di-sukharev/opencommit#setup"
|
"For help look into README https://github.com/di-sukharev/opencommit#setup"
|
||||||
@@ -21728,6 +21732,17 @@ var OpenAi = class {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
var getOpenCommitLatestVersion = async () => {
|
||||||
|
try {
|
||||||
|
const { data } = await axios_default.get(
|
||||||
|
"https://unpkg.com/opencommit/package.json"
|
||||||
|
);
|
||||||
|
return data.version;
|
||||||
|
} catch (_6) {
|
||||||
|
ce("Error while getting the latest version of opencommit");
|
||||||
|
return void 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
var api = new OpenAi();
|
var api = new OpenAi();
|
||||||
|
|
||||||
// src/utils/tokenCount.ts
|
// src/utils/tokenCount.ts
|
||||||
@@ -21898,7 +21913,7 @@ var prepareCommitMessageHook = async (isStageAllFlag = false) => {
|
|||||||
if (changedFiles)
|
if (changedFiles)
|
||||||
await gitAdd({ files: changedFiles });
|
await gitAdd({ files: changedFiles });
|
||||||
else {
|
else {
|
||||||
ce("No changes detected, write some code and run `oc` again");
|
ce("No changes detected, write some code and run `oco` again");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22032,7 +22047,7 @@ async function commit(extraArgs2 = [], isStageAllFlag = false) {
|
|||||||
if (changedFiles2)
|
if (changedFiles2)
|
||||||
await gitAdd({ files: changedFiles2 });
|
await gitAdd({ files: changedFiles2 });
|
||||||
else {
|
else {
|
||||||
ce("No changes detected, write some code and run `oc` again");
|
ce("No changes detected, write some code and run `oco` again");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22090,6 +22105,25 @@ ${stagedFiles.map((file) => ` ${file}`).join("\n")}`
|
|||||||
process.exit(0);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// src/utils/checkIsLatestVersion.ts
|
||||||
|
var checkIsLatestVersion = async () => {
|
||||||
|
const latestVersion = await getOpenCommitLatestVersion();
|
||||||
|
if (latestVersion) {
|
||||||
|
const currentVersion = package_default.version;
|
||||||
|
if (currentVersion !== latestVersion) {
|
||||||
|
console.warn(
|
||||||
|
source_default.yellow(
|
||||||
|
`
|
||||||
|
You are not using the latest stable version of OpenCommit with new features and bug fixes.
|
||||||
|
Current version: ${currentVersion}. Latest version: ${latestVersion}.
|
||||||
|
\u{1F680} To update run: npm i -g opencommit@latest.
|
||||||
|
`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// src/cli.ts
|
// src/cli.ts
|
||||||
var extraArgs = process.argv.slice(2);
|
var extraArgs = process.argv.slice(2);
|
||||||
Z2(
|
Z2(
|
||||||
@@ -22102,6 +22136,7 @@ Z2(
|
|||||||
help: { description: package_default.description }
|
help: { description: package_default.description }
|
||||||
},
|
},
|
||||||
async () => {
|
async () => {
|
||||||
|
await checkIsLatestVersion();
|
||||||
if (await isHookCalled()) {
|
if (await isHookCalled()) {
|
||||||
prepareCommitMessageHook();
|
prepareCommitMessageHook();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -26839,7 +26839,7 @@ var configValidators = {
|
|||||||
}
|
}
|
||||||
validateConfig(
|
validateConfig(
|
||||||
"OCO_OPENAI_MAX_TOKENS" /* OCO_OPENAI_MAX_TOKENS */,
|
"OCO_OPENAI_MAX_TOKENS" /* OCO_OPENAI_MAX_TOKENS */,
|
||||||
typeof value === "number",
|
value ? typeof value === "number" : void 0,
|
||||||
"Must be a number"
|
"Must be a number"
|
||||||
);
|
);
|
||||||
return value;
|
return value;
|
||||||
@@ -26870,8 +26870,8 @@ var configValidators = {
|
|||||||
},
|
},
|
||||||
["OCO_MODEL" /* OCO_MODEL */](value) {
|
["OCO_MODEL" /* OCO_MODEL */](value) {
|
||||||
validateConfig(
|
validateConfig(
|
||||||
"OCO_OPENAI_BASE_PATH" /* OCO_OPENAI_BASE_PATH */,
|
"OCO_MODEL" /* OCO_MODEL */,
|
||||||
value === "gpt-3.5-turbo" || value === "gpt-4",
|
["gpt-3.5-turbo", "gpt-4"].includes(value),
|
||||||
`${value} is not supported yet, use 'gpt-4' or 'gpt-3.5-turbo' (default)`
|
`${value} is not supported yet, use 'gpt-4' or 'gpt-3.5-turbo' (default)`
|
||||||
);
|
);
|
||||||
return value;
|
return value;
|
||||||
@@ -26881,12 +26881,12 @@ var configPath = (0, import_path.join)((0, import_os.homedir)(), ".opencommit");
|
|||||||
var getConfig = () => {
|
var getConfig = () => {
|
||||||
const configFromEnv = {
|
const configFromEnv = {
|
||||||
OCO_OPENAI_API_KEY: process.env.OCO_OPENAI_API_KEY,
|
OCO_OPENAI_API_KEY: process.env.OCO_OPENAI_API_KEY,
|
||||||
OCO_OPENAI_MAX_TOKENS: Number(process.env.OCO_OPENAI_MAX_TOKENS),
|
OCO_OPENAI_MAX_TOKENS: process.env.OCO_OPENAI_MAX_TOKENS ? Number(process.env.OCO_OPENAI_MAX_TOKENS) : void 0,
|
||||||
OCO_OPENAI_BASE_PATH: process.env.OCO_OPENAI_BASE_PATH,
|
OCO_OPENAI_BASE_PATH: process.env.OCO_OPENAI_BASE_PATH,
|
||||||
OCO_DESCRIPTION: process.env.OCO_DESCRIPTION === "true" ? true : false,
|
OCO_DESCRIPTION: process.env.OCO_DESCRIPTION === "true" ? true : false,
|
||||||
OCO_EMOJI: process.env.OCO_EMOJI === "true" ? true : false,
|
OCO_EMOJI: process.env.OCO_EMOJI === "true" ? true : false,
|
||||||
OCO_MODEL: process.env.OCO_MODEL,
|
OCO_MODEL: process.env.OCO_MODEL || "gpt-3.5-turbo",
|
||||||
OCO_LANGUAGE: process.env.OCO_LANGUAGE
|
OCO_LANGUAGE: process.env.OCO_LANGUAGE || "en"
|
||||||
};
|
};
|
||||||
const configExists = (0, import_fs.existsSync)(configPath);
|
const configExists = (0, import_fs.existsSync)(configPath);
|
||||||
if (!configExists)
|
if (!configExists)
|
||||||
@@ -26894,6 +26894,10 @@ var getConfig = () => {
|
|||||||
const configFile = (0, import_fs.readFileSync)(configPath, "utf8");
|
const configFile = (0, import_fs.readFileSync)(configPath, "utf8");
|
||||||
const config4 = (0, import_ini.parse)(configFile);
|
const config4 = (0, import_ini.parse)(configFile);
|
||||||
for (const configKey of Object.keys(config4)) {
|
for (const configKey of Object.keys(config4)) {
|
||||||
|
if (!config4[configKey] || ["null", "undefined"].includes(config4[configKey])) {
|
||||||
|
config4[configKey] = void 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const validator = configValidators[configKey];
|
const validator = configValidators[configKey];
|
||||||
const validValue = validator(
|
const validValue = validator(
|
||||||
@@ -26969,7 +26973,7 @@ var [command, mode] = process.argv.slice(2);
|
|||||||
if (!apiKey && command !== "config" && mode !== "set" /* set */) {
|
if (!apiKey && command !== "config" && mode !== "set" /* set */) {
|
||||||
ae("opencommit");
|
ae("opencommit");
|
||||||
ce(
|
ce(
|
||||||
"OCO_OPENAI_API_KEY is not set, please run `oc config set OCO_OPENAI_API_KEY=<your token>. Make sure you add payment details, so API works.`"
|
"OCO_OPENAI_API_KEY is not set, please run `oco config set OCO_OPENAI_API_KEY=<your token>. Make sure you add payment details, so API works.`"
|
||||||
);
|
);
|
||||||
ce(
|
ce(
|
||||||
"For help look into README https://github.com/di-sukharev/opencommit#setup"
|
"For help look into README https://github.com/di-sukharev/opencommit#setup"
|
||||||
|
|||||||
5
package-lock.json
generated
5
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "opencommit",
|
"name": "opencommit",
|
||||||
"version": "2.0.17",
|
"version": "2.1.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "opencommit",
|
"name": "opencommit",
|
||||||
"version": "2.0.17",
|
"version": "2.1.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.10.0",
|
"@actions/core": "^1.10.0",
|
||||||
@@ -26,7 +26,6 @@
|
|||||||
"openai": "^3.2.1"
|
"openai": "^3.2.1"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"oc": "out/cli.cjs",
|
|
||||||
"oco": "out/cli.cjs",
|
"oco": "out/cli.cjs",
|
||||||
"opencommit": "out/cli.cjs"
|
"opencommit": "out/cli.cjs"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "opencommit",
|
"name": "opencommit",
|
||||||
"version": "2.0.17",
|
"version": "2.1.1",
|
||||||
"description": "Auto-generate impressive commits in 1 second. Killing lame commits with AI 🤯🔫",
|
"description": "Auto-generate impressive commits in 1 second. Killing lame commits with AI 🤯🔫",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"git",
|
"git",
|
||||||
@@ -17,7 +17,6 @@
|
|||||||
"main": "cli.js",
|
"main": "cli.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
"opencommit": "./out/cli.cjs",
|
"opencommit": "./out/cli.cjs",
|
||||||
"oc": "./out/cli.cjs",
|
|
||||||
"oco": "./out/cli.cjs"
|
"oco": "./out/cli.cjs"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
@@ -42,7 +41,7 @@
|
|||||||
"start": "node ./out/cli.cjs",
|
"start": "node ./out/cli.cjs",
|
||||||
"dev": "ts-node ./src/cli.ts",
|
"dev": "ts-node ./src/cli.ts",
|
||||||
"build": "rimraf out && node esbuild.config.js",
|
"build": "rimraf out && node esbuild.config.js",
|
||||||
"deploy": "npm run build && npm version patch && npm publish --tag latest",
|
"deploy": "npm run build:push && npm version patch && git push origin --tags && npm publish --tag latest",
|
||||||
"build:push": "npm run build && git add . && git commit -m 'build' && git push",
|
"build:push": "npm run build && git add . && git commit -m 'build' && git push",
|
||||||
"lint": "eslint src --ext ts && tsc --noEmit",
|
"lint": "eslint src --ext ts && tsc --noEmit",
|
||||||
"format": "prettier --write src"
|
"format": "prettier --write src"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ if (!apiKey && command !== 'config' && mode !== CONFIG_MODES.set) {
|
|||||||
intro('opencommit');
|
intro('opencommit');
|
||||||
|
|
||||||
outro(
|
outro(
|
||||||
'OCO_OPENAI_API_KEY is not set, please run `oc config set OCO_OPENAI_API_KEY=<your token>. Make sure you add payment details, so API works.`'
|
'OCO_OPENAI_API_KEY is not set, please run `oco config set OCO_OPENAI_API_KEY=<your token>. Make sure you add payment details, so API works.`'
|
||||||
);
|
);
|
||||||
outro(
|
outro(
|
||||||
'For help look into README https://github.com/di-sukharev/opencommit#setup'
|
'For help look into README https://github.com/di-sukharev/opencommit#setup'
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { configCommand } from './commands/config';
|
|||||||
import { hookCommand, isHookCalled } from './commands/githook.js';
|
import { hookCommand, isHookCalled } from './commands/githook.js';
|
||||||
import { prepareCommitMessageHook } from './commands/prepare-commit-msg-hook';
|
import { prepareCommitMessageHook } from './commands/prepare-commit-msg-hook';
|
||||||
import { commit } from './commands/commit';
|
import { commit } from './commands/commit';
|
||||||
// import { checkIsLatestVersion } from './utils/checkIsLatestVersion';
|
import { checkIsLatestVersion } from './utils/checkIsLatestVersion';
|
||||||
|
|
||||||
const extraArgs = process.argv.slice(2);
|
const extraArgs = process.argv.slice(2);
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ cli(
|
|||||||
help: { description: packageJSON.description }
|
help: { description: packageJSON.description }
|
||||||
},
|
},
|
||||||
async () => {
|
async () => {
|
||||||
// await checkIsLatestVersion();
|
await checkIsLatestVersion();
|
||||||
|
|
||||||
if (await isHookCalled()) {
|
if (await isHookCalled()) {
|
||||||
prepareCommitMessageHook();
|
prepareCommitMessageHook();
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { execa } from 'execa';
|
import { execa } from 'execa';
|
||||||
import {
|
import {
|
||||||
GenerateCommitMessageErrorEnum,
|
|
||||||
generateCommitMessageByDiff
|
generateCommitMessageByDiff
|
||||||
} from '../generateCommitMessageFromGitDiff';
|
} from '../generateCommitMessageFromGitDiff';
|
||||||
import {
|
import {
|
||||||
@@ -139,7 +138,7 @@ export async function commit(
|
|||||||
|
|
||||||
if (changedFiles) await gitAdd({ files: changedFiles });
|
if (changedFiles) await gitAdd({ files: changedFiles });
|
||||||
else {
|
else {
|
||||||
outro('No changes detected, write some code and run `oc` again');
|
outro('No changes detected, write some code and run `oco` again');
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ export const configValidators = {
|
|||||||
}
|
}
|
||||||
validateConfig(
|
validateConfig(
|
||||||
CONFIG_KEYS.OCO_OPENAI_MAX_TOKENS,
|
CONFIG_KEYS.OCO_OPENAI_MAX_TOKENS,
|
||||||
typeof value === 'number',
|
value ? typeof value === 'number' : undefined,
|
||||||
'Must be a number'
|
'Must be a number'
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -117,8 +117,8 @@ export const configValidators = {
|
|||||||
|
|
||||||
[CONFIG_KEYS.OCO_MODEL](value: any) {
|
[CONFIG_KEYS.OCO_MODEL](value: any) {
|
||||||
validateConfig(
|
validateConfig(
|
||||||
CONFIG_KEYS.OCO_OPENAI_BASE_PATH,
|
CONFIG_KEYS.OCO_MODEL,
|
||||||
value === 'gpt-3.5-turbo' || value === 'gpt-4',
|
['gpt-3.5-turbo', 'gpt-4'].includes(value),
|
||||||
`${value} is not supported yet, use 'gpt-4' or 'gpt-3.5-turbo' (default)`
|
`${value} is not supported yet, use 'gpt-4' or 'gpt-3.5-turbo' (default)`
|
||||||
);
|
);
|
||||||
return value;
|
return value;
|
||||||
@@ -134,12 +134,12 @@ const configPath = pathJoin(homedir(), '.opencommit');
|
|||||||
export const getConfig = (): ConfigType | null => {
|
export const getConfig = (): ConfigType | null => {
|
||||||
const configFromEnv = {
|
const configFromEnv = {
|
||||||
OCO_OPENAI_API_KEY: process.env.OCO_OPENAI_API_KEY,
|
OCO_OPENAI_API_KEY: process.env.OCO_OPENAI_API_KEY,
|
||||||
OCO_OPENAI_MAX_TOKENS: Number(process.env.OCO_OPENAI_MAX_TOKENS),
|
OCO_OPENAI_MAX_TOKENS: process.env.OCO_OPENAI_MAX_TOKENS ? Number(process.env.OCO_OPENAI_MAX_TOKENS) : undefined,
|
||||||
OCO_OPENAI_BASE_PATH: process.env.OCO_OPENAI_BASE_PATH,
|
OCO_OPENAI_BASE_PATH: process.env.OCO_OPENAI_BASE_PATH,
|
||||||
OCO_DESCRIPTION: process.env.OCO_DESCRIPTION === 'true' ? true : false,
|
OCO_DESCRIPTION: process.env.OCO_DESCRIPTION === 'true' ? true : false,
|
||||||
OCO_EMOJI: process.env.OCO_EMOJI === 'true' ? true : false,
|
OCO_EMOJI: process.env.OCO_EMOJI === 'true' ? true : false,
|
||||||
OCO_MODEL: process.env.OCO_MODEL,
|
OCO_MODEL: process.env.OCO_MODEL || 'gpt-3.5-turbo',
|
||||||
OCO_LANGUAGE: process.env.OCO_LANGUAGE
|
OCO_LANGUAGE: process.env.OCO_LANGUAGE || 'en'
|
||||||
};
|
};
|
||||||
|
|
||||||
const configExists = existsSync(configPath);
|
const configExists = existsSync(configPath);
|
||||||
@@ -149,6 +149,10 @@ export const getConfig = (): ConfigType | null => {
|
|||||||
const config = iniParse(configFile);
|
const config = iniParse(configFile);
|
||||||
|
|
||||||
for (const configKey of Object.keys(config)) {
|
for (const configKey of Object.keys(config)) {
|
||||||
|
if (!config[configKey] || ['null', 'undefined'].includes(config[configKey])) {
|
||||||
|
config[configKey] = undefined;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const validator = configValidators[configKey as CONFIG_KEYS];
|
const validator = configValidators[configKey as CONFIG_KEYS];
|
||||||
const validValue = validator(
|
const validValue = validator(
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export const prepareCommitMessageHook = async (
|
|||||||
|
|
||||||
if (changedFiles) await gitAdd({ files: changedFiles });
|
if (changedFiles) await gitAdd({ files: changedFiles });
|
||||||
else {
|
else {
|
||||||
outro('No changes detected, write some code and run `oc` again');
|
outro('No changes detected, write some code and run `oco` again');
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,9 +74,6 @@ export enum GenerateCommitMessageErrorEnum {
|
|||||||
emptyMessage = 'EMPTY_MESSAGE'
|
emptyMessage = 'EMPTY_MESSAGE'
|
||||||
}
|
}
|
||||||
|
|
||||||
interface GenerateCommitMessageError {
|
|
||||||
error: GenerateCommitMessageErrorEnum;
|
|
||||||
}
|
|
||||||
|
|
||||||
const INIT_MESSAGES_PROMPT_LENGTH = INIT_MESSAGES_PROMPT.map(
|
const INIT_MESSAGES_PROMPT_LENGTH = INIT_MESSAGES_PROMPT.map(
|
||||||
(msg) => tokenCount(msg.content) + 4
|
(msg) => tokenCount(msg.content) + 4
|
||||||
|
|||||||
Reference in New Issue
Block a user