{"id":26932546,"url":"https://github.com/tornikegomareli/release-craftsman","last_synced_at":"2025-04-02T08:27:08.190Z","repository":{"id":194652456,"uuid":"691293891","full_name":"tornikegomareli/release-craftsman","owner":"tornikegomareli","description":"Rust-powered CLI tool designed to simplify and streamline the release process with help of ChatGPT. It fetches, formats, and crafts essential data for release 🏗️","archived":false,"fork":false,"pushed_at":"2023-09-21T09:14:36.000Z","size":76,"stargazers_count":7,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T19:14:10.603Z","etag":null,"topics":["change-log","cli","release-notes","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tornikegomareli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-13T22:20:59.000Z","updated_at":"2023-12-19T19:58:04.000Z","dependencies_parsed_at":"2023-09-14T13:13:38.693Z","dependency_job_id":null,"html_url":"https://github.com/tornikegomareli/release-craftsman","commit_stats":null,"previous_names":["tornikegomareli/release-craftsman"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tornikegomareli%2Frelease-craftsman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tornikegomareli%2Frelease-craftsman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tornikegomareli%2Frelease-craftsman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tornikegomareli%2Frelease-craftsman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tornikegomareli","download_url":"https://codeload.github.com/tornikegomareli/release-craftsman/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246780350,"owners_count":20832580,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["change-log","cli","release-notes","rust"],"created_at":"2025-04-02T08:27:07.618Z","updated_at":"2025-04-02T08:27:08.181Z","avatar_url":"https://github.com/tornikegomareli.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `$ releasecraftsman ` 👷🏻‍♂️🛠\n\n![render1695156361444](https://github.com/tornikegomareli/release-craftsman/assets/24585160/e8d8772f-abb4-4f20-a209-0216fa2ca58c)\n\nAutomate Your Release Process with Precision and Ease.\n\n## 🎁 Features\n\n- Generate well-crafted release notes using GPT-3.5 and GPT-4 models\n- Fetch git commit logs in various formats (`compact`, `full`)\n- Filter commit logs between two specified tags\n- Filter commit logs from the last tag to the current date\n- Seamlessly integrates with CI/CD pipelines\n\n🦄 Prompts can be improved much more\n\n## 🏗️ TODO\n\n- [x] ChatGPT integration for generating release notes\n- [x] Predefined prompts\n- [x] Better error handling\n- [X] Create different file formats, with generated content for example: Markdown\n- [X] Spinner, activity indicator or some funny activity in terminal, while GPT is generating relese notes\n- [X] Interactivity, step by step asking user to input data. \n- [ ] Custom prompts\n- [ ] Github and Gitlab integration to create tags + releases.\n\n## ⛑️ Usage\n\nOnce installed, you can run `releasecraftsman` from the terminal to start generating release notes.\n\n`releasecraftsman` will ask you couple of questions based on your need, then it will generate and create markdown file for you.\n\nIf you want to run it with single command without prompts, below are available options and commands.\n\nThis current command crafts release notes, with specific version from last tag to recent commit, using GPT4 model.\n```bash\nreleasecraftsman -f compact -s v1.0.0 -k API_KEY -m Gpt_4 -v1.0.1 \n```\n\nYou can customize it and use *GPT_3_5Turbo*, you need to use your own, or companies API_KEY.\n\n#### Options\n#### 1. Default Compact Format\n\nThis will run the program using the default 'compact' format for git logs for latest 5 commit logs\n\n```bash\nreleasecraftsman\n```\n\n#### 2. Specify a Format\nChoose between 'compact' and 'hard' formats for the git logs.\n```bash\nreleasecraftsman -f hard\n```\n#### 3. Specify Start and End Tags\nFetch git logs between specified start and end tags.\n\n```bash\nreleasecraftsman -s v1.0 -e v1.2\n```\n\nThis will defaultly uses compact mode, if you want hard format\n\n```bash\nreleasecraftsman -f hard -s v1.0 -e v1.2\n```\n\n#### 4. Specify Start Tag Only\nFrom Specified start tag to the latest commit.\n\n```bash\nreleasecraftsman -s v1.0\n```\n\n## ☁️ Installation\n\n### From Source\n\nClone the repository:\n\n```bash\ngit clone https://github.com/tornikegomareli/releasecraftsman.git\ncd releasecraftsman\n```\n\n#### With Cargo\n\nTo compile and install using Cargo, ensure you have [Cargo installed](https://doc.rust-lang.org/cargo/getting-started/installation.html) on your machine. \n\nThen run the following commands:\n```bash\ncargo build --release\n# Add to PATH\necho 'export PATH=$PATH:/path/to/target/release' \u003e\u003e ~/.bashrc\nsource ~/.bashrc\n```\n\nAfter 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\n\n#### With Makefile\n\nAlternatively, you can compile using the provided Makefile, it still uses cargo, so you still need to have cargo on your machine.\nSo you need to follow above steps.\n\n```bash\ncd releasecraftsman\nmake build\n```\nIt will compile and build\n\n```bash\ncd releasecraftsman\nmake install\n```\n\nIt will move executable to /user/local/bin\n\n```bash\ncd releasecraftsman\nmake all\n```\n\nIt will do both above commands in order\nYou can change release/debug variable inside makefile\n\n### With Homebrew\n\nIf you're on macOS, you can also install using Homebrew:\n\n```bash\nbrew tap tornikegomareli/homebrew-releasecraftsman\nbrew install releasecraftsman\n```\n\nCurrently releasecraftsman is not on official homebrew, thats why it usess my own tap, but soon will be there.\nAlso it will be soon on popular package managers for different OS's, its not only designed for mac.\n\n### From Compiled Binary\n\nCompiled binaries are also available for download from the [Releases](https://github.com/tornikegomareli/release-craftsman/releases) section on GitHub.\n\n## Contributing\n\n### Early Development Stage\n\nPlease note that `releasecraftsman` is currently in a very early stage of development. \n\n### Types of Contributions\n\nWe welcome contributions of all types. Here are some ways you can contribute:\n\n- Bug Fixes: If you find a bug, feel free to open an issue or create a pull request.\n- New Features: New ideas and features are always welcome. Please open an issue for discussion before submitting a pull request.\n- Code Quality: Improvements to the codebase, like optimizations or even simple clean-ups, are always appreciated.\n- Documentation: Enhancements to the README or in-code documentation are fantastic and extremely helpful.\n\n### 🧑‍🤝‍🧑 How to Contribute\n\n1. **Fork the Repository**: Start by forking the [ReleaseCraftsman repository](https://github.com/tornikegomareli/releasecraftsman).\n\n2. **Clone the Fork**: Clone your forked repository onto your local machine.\n\n    ```bash\n    git clone https://github.com/your-username/releasecraftsman.git\n    ```\n\n3. **Create a New Branch**: Create a new branch on your local repository to implement your changes.\n\n    ```bash\n    git checkout -b new-feature-or-fix\n    ```\n\n4. **Implement Changes**: Make your changes to the codebase, ensuring that they are well-documented.\n\n5. **Commit and Push**: Once you're happy with your changes, commit them and push the changes to your GitHub repository.\n\n    ```bash\n    git add .\n    git commit -m \"Describe your changes here\"\n    git push origin new-feature-or-fix\n    ```\n\n6. **Create a Pull Request**: Navigate to your repository on GitHub and click on \"New Pull Request\" to submit your changes for review.\n\n### ❓ Feedback and Questions\n\nFor any questions or feedback, please open an issue on GitHub. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftornikegomareli%2Frelease-craftsman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftornikegomareli%2Frelease-craftsman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftornikegomareli%2Frelease-craftsman/lists"}