Metadata-Version: 2.1
Name: lazym
Version: 0.7.0
Summary: A tool to generate commit messages using AI
Home-page: https://github.com/spitfire-sidra/lazym
Author: Amo Chen
Author-email: chimerhapsody@gmail.com
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: langchain==0.3.3
Requires-Dist: langchain-community==0.3.2
Requires-Dist: langchain-core==0.3.10
Requires-Dist: langchain-ollama==0.2.0
Requires-Dist: langchain-text-splitters==0.3.0

# lazym

lazym is an AI-powered tool that automatically generates meaningful commit messages for your Git repositories.

*lazym is inspired by [jen-Ya/commitgpt](https://github.com/jen-Ya/commitgpt)*

## Features

- Generates commit messages based on staged changes
- Without the risk of leaking code snippets to external LLM services
- Integrates seamlessly with your Git workflow
- Uses advanced language models for intelligent message generation

## Requirements

- [Ollama](https://ollama.ai/) with [Llama 3.1:8b](https://ollama.com/library/llama3.1:8b) model
- Git (version 2.0 or higher)
- Python 3.7 or above

Command to pull Llama 3.1:8b model for Ollama:

```
$ ollama run llama3.1:8b
```

## Installation
To install lazym, follow these steps:

1. Ensure you have Python 3.7+ and pip installed on your system.
2. Install lazym using pip:

   ```
   pip install lazym
   ```

3. After installation, navigate to any Git repository and run the following command to set up the Git hook:

   ```
   lazym install
   ```

   This will install the necessary Git hook to enable automatic commit message generation.

## Usage

Once installed and set up, lazym works in two ways:

1. Automatically when you make a commit:
   Simply stage your changes as usual and run `git commit`. lazym will generate a commit message based on your staged changes.

2. Manually by running `lazym ci "<hints for LLM>"`:
   This command allows you to generate a commit message with additional context provided to the LLM.

After generating the commit message, you'll be presented with three options:

1. Accept and commit: Use the generated message as-is and commit.
2. Edit message: Modify the generated message before committing.
3. Cancel commit: Abort the commit process.

This allows you to benefit from the AI-generated suggestions while maintaining full control over your commit messages. When editing, you can start with the AI-generated message and make any necessary adjustments.

## Commands

- `lazym install`: Install the prepare-commit-msg hook in the current Git repository.
- `lazym uninstall`: Uninstall the prepare-commit-msg hook from the current Git repository.
- `lazym ci "<optional hints>"`: Generate a commit message with optional additional context.

## Configuration

lazym can be configured using a `config.ini` file located at `~/.config/lazym/config.ini`. The following options are available:

### [DEFAULT]

- `model`: The AI model to use for generating commit messages. 
  - Default: `"llama3.1:8b"`

- `message_format`: The format to apply to the generated commit message.
  - Default: `"lowercase"`
  - Options: 
    - `"lowercase"`: Converts the first character of the message to lowercase.
    - `"sentence case"`: Capitalizes the first character of each sentence.
    - Any other value will keep the original format as generated by the AI.

Example `config.ini`:

```ini
[DEFAULT]
model = llama3.1:8b
message_format = lowercase
```

If the `config.ini` file doesn't exist, lazym will use the default values. You can create and edit this file to customize lazym's behavior according to your preferences.
