Code Monkey home page Code Monkey logo

gpt-pr's Introduction

GPT-PR

GPT-PR is an open-source command-line tool designed to streamline your GitHub workflow for opening PRs. Leveraging OpenAI's ChatGPT API, it automatically opens a GitHub Pull Request with a predefined description and title directly from your current project directory.

asciicast

Table of Contents

Features

  • Analyzes the diff changes of the current branch against the main branch.
  • Provides an option to exclude certain file changes from PR generation (for instance, you can ignore a package.lock file with 5k lines changed).
  • Incorporates commit messages into the process.

Prerequisites

Before getting started, make sure you have the following installed:

Installation

You can install and use GPT-PR in one of two ways. Choose the option that best suits your needs.

Option 1: Using pip install (Recommended)

  1. Install the package:
pip install -U gpt-pr

Note: Use this command to update gpt-pr package to the latest version.

  1. Export API keys as environment variables (Authentication & API Keys).

  2. Inside the Git repository you are working on, ensure you have pushed your branch to origin, then run:

gpt-pr --help

Option 2: Cloning the code

  1. Clone the repository:
git clone https://github.com/alissonperez/gpt-pr.git
  1. Navigate to the project directory and install dependencies:
cd gpt-pr
pipenv install

After exporting api keys as environment variables (Authentication & API Keys), you can use GPT-PR within any git project directory. Suppose you've cloned this project to ~/workplace/gpt-pr, here's how you can use it:

PYTHONPATH=~/workplace/gpt-pr/gpt-pr \
PIPENV_PIPFILE=~/workplace/gpt-pr/Pipfile \
pipenv run python ~/workplace/gpt-pr/gptpr/main.py --help

Usage

Generating Github Pull Requests

To create a Pull request from your current branch commits to merge with main branch, just run:

gpt-pr

If you would like to compare with other base branch that is not main, just use -b param:

gpt-pr -b my-other-branch

Usage help

To show help commands:

gpt-pr -h

Authentication & API Keys

Setting up GitHub Token (GH_TOKEN)

To authenticate with GitHub, generate and export a GitHub Personal Access Token:

  1. Navigate to GitHub's Personal Access Token page.
  2. Click "Generate new token."
  3. Provide a description and select the required permissions repo for the token.
  4. Click "Generate token" at the bottom of the page.
  5. Copy the generated token.
  6. Export it as an environment variable:
export GH_TOKEN=your_generated_token_here

Setting up OpenAI API Key (OPENAI_API_KEY)

This project needs to interact with the ChatGPT API to generate the pull request description. So, you need to generate and export an OpenAI API Key:

  1. Navigate to OpenAI's API Key page.
  2. If you don't have an account, sign up and log in.
  3. Go to the API Keys section and click "Create new key."
  4. Provide a description and click "Create."
  5. Copy the generated API key.
  6. Export it as an environment variable:
export OPENAI_API_KEY=your_generated_api_key_here

Output: image

How to contribute?

Please follow our CONTRIBUTING guide.

Roadmap

  • Improve execution method, possibly through a shell script or at least an alias in bash rc files.
    • Change to use with pip installation and console_scripts entry point.
  • Fetch GitHub PR templates from the current project.
  • Add configuration to set which LLM and model should be used (OpenAI GPT, Mistral, etc...)
  • Add unit tests.

gpt-pr's People

Contributors

alissonperez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.