Rust-powered CLI tool designed to simplify and streamline the release process with help of ChatGPT

Overview

$ releasecraftsman πŸ‘·πŸ»β€β™‚οΈπŸ› 

render1695156361444

Automate Your Release Process with Precision and Ease.

🎁 Features

  • Generate well-crafted release notes using GPT-3.5 and GPT-4 models
  • Fetch git commit logs in various formats (compact, full)
  • Filter commit logs between two specified tags
  • Filter commit logs from the last tag to the current date
  • Seamlessly integrates with CI/CD pipelines

πŸ¦„ Prompts can be improved much more

πŸ—οΈ TODO

  • ChatGPT integration for generating release notes
  • Predefined prompts
  • Better error handling
  • Create different file formats, with generated content for example: Markdown
  • Spinner, activity indicator or some funny activity in terminal, while GPT is generating relese notes
  • Interactivity, step by step asking user to input data.
  • Custom prompts
  • Github and Gitlab integration to create tags + releases.

⛑️ Usage

Once installed, you can run releasecraftsman from the terminal to start generating release notes.

releasecraftsman will ask you couple of questions based on your need, then it will generate and create markdown file for you.

If you want to run it with single command without prompts, below are available options and commands.

This current command crafts release notes, with specific version from last tag to recent commit, using GPT4 model.

releasecraftsman -f compact -s v1.0.0 -k API_KEY -m Gpt_4 -v1.0.1 

You can customize it and use GPT_3_5Turbo, you need to use your own, or companies API_KEY.

Options

1. Default Compact Format

This will run the program using the default 'compact' format for git logs for latest 5 commit logs

releasecraftsman

2. Specify a Format

Choose between 'compact' and 'hard' formats for the git logs.

releasecraftsman -f hard

3. Specify Start and End Tags

Fetch git logs between specified start and end tags.

releasecraftsman -s v1.0 -e v1.2

This will defaultly uses compact mode, if you want hard format

releasecraftsman -f hard -s v1.0 -e v1.2

4. Specify Start Tag Only

From Specified start tag to the latest commit.

releasecraftsman -s v1.0

☁️ Installation

From Source

Clone the repository:

git clone https://github.com/tornikegomareli/releasecraftsman.git
cd releasecraftsman

With Cargo

To compile and install using Cargo, ensure you have Cargo installed on your machine.

Then run the following commands:

cargo build --release
# Add to PATH
echo 'export PATH=$PATH:/path/to/target/release' >> ~/.bashrc
source ~/.bashrc

After building, you'll find the executable in the target/release directory. You'll need to include this in your PATH in your .zshrc or .bashrc file

With Makefile

Alternatively, you can compile using the provided Makefile, it still uses cargo, so you still need to have cargo on your machine. So you need to follow above steps.

cd releasecraftsman
make build

It will compile and build

cd releasecraftsman
make install

It will move executable to /user/local/bin

cd releasecraftsman
make all

It will do both above commands in order You can change release/debug variable inside makefile

With Homebrew

If you're on macOS, you can also install using Homebrew:

brew tap tornikegomareli/homebrew-releasecraftsman
brew install releasecraftsman

Currently releasecraftsman is not on official homebrew, thats why it usess my own tap, but soon will be there. Also it will be soon on popular package managers for different OS's, its not only designed for mac.

From Compiled Binary

Compiled binaries are also available for download from the Releases section on GitHub.

Contributing

Early Development Stage

Please note that releasecraftsman is currently in a very early stage of development.

Types of Contributions

We welcome contributions of all types. Here are some ways you can contribute:

  • Bug Fixes: If you find a bug, feel free to open an issue or create a pull request.
  • New Features: New ideas and features are always welcome. Please open an issue for discussion before submitting a pull request.
  • Code Quality: Improvements to the codebase, like optimizations or even simple clean-ups, are always appreciated.
  • Documentation: Enhancements to the README or in-code documentation are fantastic and extremely helpful.

πŸ§‘β€πŸ€β€πŸ§‘ How to Contribute

  1. Fork the Repository: Start by forking the ReleaseCraftsman repository.

  2. Clone the Fork: Clone your forked repository onto your local machine.

    git clone https://github.com/your-username/releasecraftsman.git
  3. Create a New Branch: Create a new branch on your local repository to implement your changes.

    git checkout -b new-feature-or-fix
  4. Implement Changes: Make your changes to the codebase, ensuring that they are well-documented.

  5. Commit and Push: Once you're happy with your changes, commit them and push the changes to your GitHub repository.

    git add .
    git commit -m "Describe your changes here"
    git push origin new-feature-or-fix
  6. Create a Pull Request: Navigate to your repository on GitHub and click on "New Pull Request" to submit your changes for review.

❓ Feedback and Questions

For any questions or feedback, please open an issue on GitHub.

You might also like...
A lightweight and high-performance order-book designed to process level 2 and trades data. Available in Rust and Python

ninjabook A lightweight and high-performance order-book implemented in Rust, designed to process level 2 and trades data. Available in Python and Rust

A Rust on-site channel benchmarking helper. Inter-Process (async / busy) & Intra-Process (async single threaded / async multi threaded)

On-Site Rust Channel Benchmarking Helper Deploy on server to determine which public crates are the fastest for communicating in different architecture

A gui tool written in Dioxus to make it easy to release a workspace of crates to crates.io
A gui tool written in Dioxus to make it easy to release a workspace of crates to crates.io

Easy-Release: a visual tool for releasing workspaces of libraries A work-in-progress GUI for releasing a large workspace of crates manually, but easil

A tool for chatting using the ChatGPT API, written in Rust CLI.
A tool for chatting using the ChatGPT API, written in Rust CLI.

ChatGPT CLI A tool for chatting using the ChatGPT API, written in Rust CLI. You can use this tool to chat, just by setting your API Key. You can modif

A CLI tool that uses ChatGPT to automatically generate commit messages.

Auto Git Commit This project is a tool that uses the OpenAI GPT model to automatically generate commit messages for Git commits based on the changes m

A Rust command line tool to simplify embedded development and deployment.

Bobbin-CLI bobbin-cli is a tool designed to make it easy to build, deploy, test and debug embedded devices using a unified CLI. bobbin-cli understands

 (Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.
(Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.

Uplink Privacy First, Modular, P2P messaging client built atop Warp. Uplink is written in pure Rust with a UI in Dioxus (which is also written in Rust

locdev is a handy CLI tool that simplifies the process of adding, removing, and listing entries in the hosts file.

locdev πŸ› οΈ locdev is a handy CLI tool that simplifies the process of adding, removing, and listing entries in the hosts file. You no longer need to de

A simple cli tool to help with wordle in hard mode

Wordking A simple cli tool to help with wordle in hard mode. Usage Run wordking cargo run Wordking will ask for your guesses thus far. Provide your gu

Comments
  • Interactivity

    Interactivity

    Make optionally possible to enter parameters step by step, asking prompts.

    There is some type of libraries to use, I just investigated inquire, but looks promising

    enhancement 
    opened by tornikegomareli 1
  • Improve base prompt

    Improve base prompt

    Current prompt was giving in that way that GPT was changing context of commits and as well it was skipping some commits beacuse GPT c ouldnot categorize it, improved the prompt to fix current behavior.

    opened by tornikegomareli 0
  • Interactivity feature with inquire

    Interactivity feature with inquire

    This PR refactors the existing code to separate command-line options (CommandLineModel) from interactive prompt logic (Interactive).

    Additionally, it introduces interactivity via the inquire library, providing a more user-friendly experience.

    Changes:

    • Created CommandLineModel to hold command-line options like log_format, start_tag, etc.
    • Introduced Interactive to manage interactive prompts.
    • Interactive now holds an instance of CommandLineModel.
    • Added user prompts for each command-line argument using the inquire library.
    • Updated main.rs to initiate and utilize the new Interactive struct containing CommandLineModel.
    • Moved all interactive and parsing logic out of main into a new interactive module.

    Motivation:

    • The refactoring provides a cleaner separation of concerns, adhering to the Single Responsibility Principle. The interactive prompts make the application much more user-friendly and less error-prone, offering a better user experience.
    feature 
    opened by tornikegomareli 0
Releases(1.0.2)
  • 1.0.2(Sep 21, 2023)

  • 1.0.1(Sep 18, 2023)

    Release Notes - Version 1.0.1

    New Features

    • Added interactivity feature #10: This feature enhances the user experience by allowing interactive input for program execution.
    • Added command line model: Now the program can be executed using command line arguments.

    Improvements

    • Enhanced output: Removed unnecessary variables to optimize the output.
    • Improved interactivity: The application now runs the interactivity mode if the number of command line arguments is zero.
    • Enhanced file generation: A markdown file is now generated after receiving the GPT response.

    Bug Fixes

    • Fixed package and checksum: Updated the arguments, package, and checksum for proper functioning.
    • Fixed non-using variables: Removed unused variables to improve code readability.
    Source code(tar.gz)
    Source code(zip)
    releasecraftsman-1.0.1-x86_64-darwin.tar.gz(1.97 MB)
  • 1.0.0(Sep 18, 2023)

    CHANGELOG - Version 1.0.0

    New Features

    • Added loading indicator to improve user experience
    • Implemented modules for better code organization
    • Skipped CI for changes in README.md file
    • Updated makefile with release and debug options
    • Created rust-build.yml for CI pipeline
    • Improved command handling for running outside of git work tree
    • Removed API_KEY as a required parameter

    Improvements

    • Reformatted the code using rustfmt
    • Updated the gitignore file to skip debug and target folders
    • Updated clap version for better compatibility
    • Added a todo list for future enhancements

    Bug Fixes

    • Fixed issue of not being in git work tree and still running the command
    • Corrected typos and formatting errors in README.md
    Source code(tar.gz)
    Source code(zip)
    releasecraftsman-1.0.0-x86_64-apple-darwin-tar.gz(1.86 MB)
  • 0.1.0(Sep 13, 2023)

Owner
Tornike Gomareli
Builder, Tinkerer & Technical agnostic. Mostly in Swift, Rust πŸ¦€ and C# in past. Always trying to learn, how to think better 🧠
Tornike Gomareli
Command-line tool designed to simplify the process of managing multiple .NET SDK versions on your system

.NET Version Manager (dver) Overview dver is a command-line tool designed to simplify the process of managing multiple .NET SDK versions on your syste

Sergio Triana Escobedo 5 Aug 23, 2024
EmbedAnything is a powerful python library designed to streamline the creation and management of embedding pipelines

EmbedAnything is a powerful python library designed to streamline the creation and management of embedding pipelines. Built in Rust with no heavy dependencies.

Starlight 39 May 7, 2024
A CLI tool which can help you automatically kill process of your choice. Useful for freeing up memory and CPU usage!

Quickiller There are always programs such as chrome that keep eating up your resources even when closed! The only way to prevent this is to kill all o

Codingsquirrel 1 Dec 8, 2021
GPT-3 powered CLI tool to help you remember bash commands.

Rusty: GPT-3 Powered CLI Tool Convert natural language into executable commands directly from the terminal! Open source CLI tool powered by OpenAI (br

Zahid Khawaja 287 Apr 19, 2023
lemmy-help is a emmylua parser as well as a CLI which takes that parsed tree and converts it into vim help docs.

lemmy-help is a emmylua parser as well as a CLI which takes that parsed tree and converts it into vim help docs.

Vikas Raj 117 Jan 3, 2023
ChatGPT-rs is a lightweight ChatGPT client with a graphical user interface, written in Rust

ChatGPT-rs is a lightweight ChatGPT client with a graphical user interface, written in Rust. It allows you to chat with OpenAI's GPT models through a simple and intuitive interface.

null 7 Apr 2, 2023
Introducing Inlyne, a GPU powered yet browsless tool to help you quickly view markdown files in the blink of an eye.

Inlyne - a GPU powered, browserless, markdown + html viewer inlyne README.md --theme dark/light About Markdown files are a wonderful tool to get forma

null 308 Jan 1, 2023
A programming and system administration assistant, powered by chatGPT

TermGPT Interact with ChatGPT from your terminal! ?? ?? Install Cargo cargo install termgpt termgpt --help From source git clone [email protected]:bahdot

Gokul 5 May 11, 2023
ChatGPT powered Rust proc macro that generates code at compile-time.

gpt-macro ChatGPT powered Rust proc macro that generates code at compile-time. Implemented Macros auto_impl!{} #[auto_test(...)] Usage Get ChatGPT API

Akira Moroo 429 Apr 15, 2023
A CLI tool to get help with CLI tools πŸ™

A CLI tool to get help with CLI tools ?? halp aims to help find the correct arguments for command-line tools by checking the predefined list of common

Orhun ParmaksΔ±z 566 Apr 16, 2023