14 Commits

Author SHA1 Message Date
di-sukharev
5abe5d715d * refactor(commit.ts): remove unnecessary blank lines
* feat(commit.ts): add spinner to show progress of `git push` command
* feat(commit.ts): show success message after successful `git push` command execution
2023-03-10 15:24:49 +08:00
di-sukharev
1050cad95d * refactor(commit.ts): extract stdout from git push command into a variable 2023-03-09 21:32:07 +08:00
di-sukharev
7bbc97980e * refactor(commit.ts): remove unused stdout variable and simplify pushSpinner.stop() call 2023-03-09 21:31:31 +08:00
di-sukharev
a8839353f7 * chore(commit.ts): add spinner to indicate git push process
* refactor(commit.ts): change success message to include spinner in `git push` process
2023-03-09 21:25:38 +08:00
di-sukharev
88006b8693 * fix(commit.ts): add check for cancelation of git push confirmation prompt 2023-03-09 21:23:58 +08:00
di-sukharev
3892bd0e69 * feat(commit.ts): add option to push commits after successful commit 2023-03-09 21:22:35 +08:00
di-sukharev
5615bdce86 * refactor(commit.ts): add stdout to commit function output
* fix(commit.ts): fix commit confirmation message to show correct status
2023-03-09 14:02:04 +08:00
di-sukharev
68b327bee7 * refactor(prepare-commit-msg-hook.ts): remove outro function call and its message from try block 2023-03-09 14:00:50 +08:00
di-sukharev
caa64fbcf9 * refactor(prepare-commit-msg-hook.ts): change appendFile to writeFile to write commit message to file
* chore(prepare-commit-msg-hook.ts): add newline character before appending file content to commit message
2023-03-09 13:58:27 +08:00
di-sukharev
1a49c08409 * chore(commit.ts): change stagedFilesSpinner message when no files are staged 2023-03-09 13:56:03 +08:00
di-sukharev
60325f53b9 * 🚧 chore(prepare-commit-msg-hook.ts): remove console.log and add TODO comment
The console.log statement is removed as it is not needed. A TODO comment is added to remind the developer to change the code to read file and write file with commitMessage.
2023-03-06 23:56:38 +08:00
di-sukharev
3966c4c53a * 🐛 fix(prepare-commit-msg-hook.ts): remove console.log statement
The console.log statement was left in the code and is not needed. This commit removes it.
2023-03-06 23:52:34 +08:00
di-sukharev
e89fc96732 * 🎨 style(githook.ts): remove unused import
The import of fileURLToPath from the url module is not used in the file, so it has been removed to improve code readability and maintainability.
2023-03-06 23:35:39 +08:00
di-sukharev
eae7618d57 * 📝 docs(TODO.md): add TODOs
Added a TODO list with tasks that need to be completed. These tasks include building for both mjs and cjs, configuring esbuild to make the bundle smaller, adding // TODOs in the code, batching small files in one request, adding tests, and making the hook work.

*  feat(api.ts): add OpenAI class with generateCommitMessage method
This commit adds a new OpenAI class with a generateCommitMessage method that uses the OpenAI API to generate a commit message based on an array of messages. The method takes an array of ChatCompletionRequestMessage objects and returns a Promise that resolves to a ChatCompletionResponseMessage object. The OpenAI class is exported as a singleton instance named api.

*  feat(prepare-commit-msg-hook.ts): add support for generating commit messages with chat completion
This commit adds support for generating commit messages with chat completion. The `prepare-commit-msg-hook.ts` file now imports the `generateCommitMessageWithChatCompletion` function from the `generateCommitMessageFromGitDiff` module. The function generates a commit message based on the staged git diff and appends it to the commit message file. If the `OPENAI_API_KEY` environment variable is not set, an error is thrown. If the commit source is specified, the function returns without generating a commit message.

* 🆕 feat(generateCommitMessageFromGitDiff.ts): add functionality to generate commit messages from git diff
This commit adds a new file, generateCommitMessageFromGitDiff.ts, which contains a function that generates commit messages from the output of the 'git diff --staged' command. The function uses the OpenAI API to prompt the user to create a commit message in the conventional commit convention. The user can choose to use Gitmoji convention to preface the commit and add a short description of what the commit is about.

* 🐛 fix(server.ts): change port variable case from lowercase port to uppercase PORT
*  feat(server.ts): add support for process.env.PORT environment variable
The port variable is now named PORT, which improves consistency with the naming conventions as PORT is a constant. Support for an environment variable allows the application to be more flexible as it can now run on any available port specified via the process.env.PORT environment variable.

* 🚀 feat: add function to generate commit messages from diff
This commit adds a new function that generates commit messages from a diff. The function takes a diff as input and splits it into files. It then generates commit messages for each file and returns them as a concatenated string. If the total length of the commit message exceeds the maximum allowed length, the function skips the file. If the commit message is empty, the function skips the file. If an error occurs during the process, the function returns an error.

*  feat(git.ts): add function to assert git repository existence
*  feat(git.ts): add function to get staged git diff
The assertGitRepo function checks if the current directory is a git repository by running the 'git rev-parse' command. If the command fails, an error is thrown.

The getStagedGitDiff function returns the staged diff of the git repository. It takes an optional boolean argument isStageAllFlag, which when true stages all changes before getting the diff. The function uses the 'git diff --staged' command to get the diff and excludes big files from the diff. The function returns an object with two properties: files, which is an array of the names of the files that have changes, and diff, which is the diff of the staged changes.
2023-03-06 22:55:02 +08:00