Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/loftwah/grabitsh
A powerful CLI tool for gathering and summarizing key information from Git repositories, enhancing developer productivity through automation and streamlined analysis.
https://github.com/loftwah/grabitsh
automation chatgpt claude cli-tool developer-tools gather-tool git go golang llm open-source productivity repository-analysis
Last synced: 4 months ago
JSON representation
A powerful CLI tool for gathering and summarizing key information from Git repositories, enhancing developer productivity through automation and streamlined analysis.
- Host: GitHub
- URL: https://github.com/loftwah/grabitsh
- Owner: loftwah
- License: mit
- Created: 2024-08-31T04:51:35.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-09-13T12:27:24.000Z (5 months ago)
- Last Synced: 2024-09-30T09:23:28.746Z (4 months ago)
- Topics: automation, chatgpt, claude, cli-tool, developer-tools, gather-tool, git, go, golang, llm, open-source, productivity, repository-analysis
- Language: Go
- Homepage: https://grabit.sh
- Size: 6.97 MB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Grabit.sh
[DEMO VIDEO](https://www.youtube.com/watch?v=M6FjvHV1qak)
Grabit.sh is a powerful command-line tool designed to quickly gather and summarize useful information from Git repositories. It provides developers with a comprehensive overview of a project's structure, Git information, important files, and more.
![# Grabit sh Grabit sh is a powerful command-line tool designed to quickly gather and summarize useful information from Git repositories It provides developers with a comprehensive overview of a p](https://github.com/user-attachments/assets/f1fb1602-88bc-4898-a3c4-dbbcf92a584e)
## Features
- Repository structure visualization
- Git information summary (recent commits, branches, remotes, status)
- Identification of important configuration files
- Large file detection
- File type summary
- Recently modified files list
- Project type detection
- LLM-friendly output chunks for easy integration with AI models## Installation
### Pre-built Binaries
You can download pre-built binaries for your platform from the [Releases](https://github.com/loftwah/grabitsh/releases) page or use `curl` for direct download.
#### Linux
1. Download the `grabitsh-linux-amd64` file from the latest release:
```bash
curl -L -o grabitsh-linux-amd64 https://github.com/loftwah/grabitsh/releases/latest/download/grabitsh-linux-amd64
```2. Make it executable:
```bash
chmod +x grabitsh-linux-amd64
```3. Optionally, move it to a directory in your PATH:
```bash
sudo mv grabitsh-linux-amd64 /usr/local/bin/grabitsh
```#### macOS
1. Download the `grabitsh-darwin-amd64` file from the latest release:
```bash
curl -L -o grabitsh-darwin-amd64 https://github.com/loftwah/grabitsh/releases/latest/download/grabitsh-darwin-amd64
```2. Make it executable:
```bash
chmod +x grabitsh-darwin-amd64
```3. Optionally, move it to a directory in your PATH:
```bash
sudo mv grabitsh-darwin-amd64 /usr/local/bin/grabitsh
```#### Windows
1. Download the `grabitsh-windows-amd64.exe` file from the latest release using a browser or:
```bash
curl -L -o grabitsh-windows-amd64.exe https://github.com/loftwah/grabitsh/releases/latest/download/grabitsh-windows-amd64.exe
```2. Optionally, rename it to `grabitsh.exe` for convenience.
3. Add the directory containing the executable to your PATH environment variable.
### Building from Source
If you prefer to build from source or want the latest development version:
1. Ensure you have Go installed on your system.
2. Clone the repository:
```bash
git clone https://github.com/loftwah/grabitsh.git
```3. Navigate to the project directory:
```bash
cd grabit.sh
```4. Build the project:
```bash
go build -o grabitsh
```## Usage
To use Grabit.sh, navigate to a Git repository directory and run the following command:
```bash
grabitsh --output
```Replace `` with one of the following options:
- `stdout`: Display the output in the terminal (default)
- `clipboard`: Copy the output to your clipboard
- `file`: Save the output to a file (use the `-f` flag to specify the file path)
- `llm-chunks`: Generate LLM-friendly chunks of the output (new feature)### Examples
1. Display output in the terminal:
```bash
grabitsh --output stdout
```2. Copy output to clipboard:
```bash
grabitsh --output clipboard
```3. Save output to a file:
```bash
grabitsh --output file -f output.txt
```4. Generate LLM-friendly chunks:
```bash
grabitsh --output llm-chunks
```This will create multiple text files, each containing a portion of the output with a preamble suitable for use with Large Language Models.
5. Customize chunk size for LLM output:
```bash
grabitsh --output llm-chunks --chunk-size 50000
```This sets the chunk size to 50,000 tokens. The default is 100,000 tokens.
### LLM-Chunks Feature
The LLM-chunks output method is designed to create AI-friendly chunks of the Grabit.sh output. Each chunk includes a preamble that provides context about the tool, its purpose, and instructions for the AI model. This feature is particularly useful when you want to analyze the output using a Large Language Model or other AI tools.
Key points about LLM-chunks:
- Each chunk is saved as a separate text file (`grabitsh_chunk_1.txt`, `grabitsh_chunk_2.txt`, etc.).
- The default chunk size is 100,000 tokens, which can be customized using the `--chunk-size` flag.
- The preamble in each chunk helps the AI understand the context and purpose of the information.
- This feature makes it easy to feed the Grabit.sh output into AI models for further analysis or to generate insights about the repository.## Web Server
Grabit.sh also includes a web server feature. To start the web server, use the following command:
```bash
grabitsh serve
```This will start a web server on port 42069. You can access it by navigating to `http://localhost:42069` in your web browser.
## Future Development
### Expansion Plans
Grabit.sh is evolving beyond its current CLI functionality to include web-based capabilities. The following features and versions are planned for future releases:
1. **Free Hosted Version (Public Repositories)**
- A web-based platform where users can input public Git repository URLs (GitHub, GitLab, Gitea, etc.).
- The system will scan the repository online and generate summaries and documentation similar to the CLI version.
- This version will be completely free for all users working with public repositories.2. **Paid Hosted Version (Private Repositories)**
- A subscription-based model designed for users who need to analyze private repositories.
- Offers advanced features such as:
- Priority processing
- Enhanced security protocols
- Team collaboration tools
- Multi-repo management- The pricing will be tiered based on the number of repositories and users, with options for monthly or annual subscriptions.
### Key Benefits
- **Time Efficiency**: Quickly identifies essential files and generates necessary documentation, saving significant time for developers and teams.
- **User-Friendly**: Offers both CLI and web-based interfaces to cater to different user preferences.
- **Integration and Flexibility**: Compatible with any Git platform and supports multiple repositories.
- **Comprehensive Free Options**: Open-source CLI and free hosted options encourage widespread adoption, while the paid model is ideal for monetizing private, enterprise usage.### Requirements for Future Versions
- Users will need to bring their own OpenAI API key to utilize the LLM features, which adds flexibility and reduces operating costs for the service.
## Project Structure
```go
grabit.sh/
├── cmd/
│ └── grabitsh/
│ ├── root.go
│ ├── serve.go
│ └── project_detection.go
├── main.go
├── go.mod
├── go.sum
├── LICENSE
├── README.md
└── .gitignore
```## Contributing
Contributions to Grabit.sh are welcome! Please feel free to submit a Pull Request.
## License
This project is licensed under the terms of the license included in the [LICENSE](LICENSE) file.
## Contact
For any queries or suggestions, please open an issue on the GitHub repository.