2024-01-03 13:21:34 +00:00
|
|
|
<!--
|
|
|
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
#
|
|
|
|
# SPDX-FileCopyrightText: 2023 Glenn Y. Rolland <glenux@glenux.net>
|
|
|
|
# Copyright © 2023 Glenn Y. Rolland <glenux@glenux.net>
|
|
|
|
-->
|
|
|
|
|
|
|
|
[![Build Status](https://cicd.apps.glenux.net/api/badges/glenux/code-preloader/status.svg)](https://cicd.apps.glenux.net/glenux/code-preloader)
|
|
|
|
![License LGPL3.0-or-later](https://img.shields.io/badge/license-LGPL3.0--or--later-blue.svg)
|
|
|
|
[![Donate on patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://patreon.com/glenux)
|
|
|
|
|
2024-01-03 17:49:49 +00:00
|
|
|
> :information_source: This project is available on our self-hosted server and
|
|
|
|
> on CodeBerg and GitHub as mirrors. For the latest updates and comprehensive
|
|
|
|
> version of our project, please visit our primary repository at:
|
|
|
|
> <https://code.apps.glenux.net/glenux/code-preloader>.
|
2024-01-03 17:41:53 +00:00
|
|
|
|
2024-01-03 17:18:18 +00:00
|
|
|
# Code-Preloader
|
2023-12-29 13:13:20 +00:00
|
|
|
|
2023-12-29 14:05:51 +00:00
|
|
|
Code-Preloader is a specialized tool designed to streamline the process of
|
2024-01-03 17:18:18 +00:00
|
|
|
working on coding projects with interactive large language models (LLM) like
|
|
|
|
ChatGPT, Claude, Mixtral 8x7B, etc.
|
|
|
|
|
|
|
|
It preloads and concatenates files from a specified directory, allowing for the
|
|
|
|
seamless integration of customized prompts.
|
|
|
|
|
|
|
|
This tool is ideal for those who seek an alternative to tools like GitHub
|
|
|
|
Copilot, enabling a tailored interaction with your favorite LLM.
|
2023-12-29 13:13:20 +00:00
|
|
|
|
2023-12-29 13:57:11 +00:00
|
|
|
## Features
|
2023-12-29 13:13:20 +00:00
|
|
|
|
2023-12-29 13:57:11 +00:00
|
|
|
* Preload and concatenate files from a given directory.
|
2024-01-03 17:18:18 +00:00
|
|
|
* Customizable header and footer prompts for your LLM.
|
2023-12-29 13:57:11 +00:00
|
|
|
* Simple command-line interface for easy operation.
|
2023-12-29 13:13:20 +00:00
|
|
|
|
2023-12-29 13:57:11 +00:00
|
|
|
## Limitations
|
2023-12-29 13:13:20 +00:00
|
|
|
|
2024-01-03 16:53:01 +00:00
|
|
|
**Note:** This tool is optimized for smaller codebases. For larger
|
2023-12-29 14:05:51 +00:00
|
|
|
repositories, performance may not be optimal due to processing constraints and
|
2024-01-03 17:18:18 +00:00
|
|
|
the nature of interactions with LLMs.
|
2023-12-29 13:57:11 +00:00
|
|
|
|
2024-01-03 13:07:34 +00:00
|
|
|
## Prerequisites
|
|
|
|
|
|
|
|
Before installing and using Code-Preloader, make sure your system meets the
|
|
|
|
following requirements:
|
|
|
|
|
|
|
|
1. **Crystal Language**: Code-Preloader is written in Crystal. Ensure you have
|
|
|
|
the Crystal programming language installed on your system. For installation
|
|
|
|
instructions, refer to the [official Crystal language
|
|
|
|
website](https://crystal-lang.org/install/).
|
|
|
|
|
|
|
|
2. **Required Libraries**: The following libraries are necessary for the proper
|
|
|
|
functioning of Code-Preloader:
|
|
|
|
* `libevent`: Used for asynchronous event notification.
|
|
|
|
* `libyaml`: Required for YAML parsing.
|
|
|
|
* `libmagic`: Utilized for file type detection.
|
|
|
|
* `make`: Used to define compilation rules
|
|
|
|
|
|
|
|
On a Debian-based system, you can install these libraries using the following
|
|
|
|
command:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
sudo apt-get install libevent-dev libyaml-dev libmagic-dev make
|
|
|
|
```
|
|
|
|
|
2023-12-29 13:57:11 +00:00
|
|
|
## Installation
|
|
|
|
|
2024-01-03 13:07:34 +00:00
|
|
|
To get started with Code-Preloader, ensure that you have the prerequisites
|
|
|
|
installed on your system (see above).
|
|
|
|
|
|
|
|
Then follow these steps to install:
|
2023-12-29 13:57:11 +00:00
|
|
|
|
|
|
|
```bash
|
2024-01-03 13:07:34 +00:00
|
|
|
git clone https://code.apps.glenux.net/glenux/code-preloader
|
2023-12-29 13:57:11 +00:00
|
|
|
cd code-preloader
|
2024-01-03 13:07:34 +00:00
|
|
|
make prepare
|
|
|
|
make build
|
|
|
|
make install
|
2023-12-29 13:13:20 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
2024-01-04 11:42:34 +00:00
|
|
|
### Packing directory content
|
|
|
|
|
2023-12-29 13:57:11 +00:00
|
|
|
Run Code-Preloader with the following command-line options:
|
|
|
|
|
2023-12-29 13:13:20 +00:00
|
|
|
```
|
2024-01-04 11:42:34 +00:00
|
|
|
Usage: code-preloader pack [options] DIR ...
|
2024-01-03 17:14:03 +00:00
|
|
|
|
2024-01-04 11:42:34 +00:00
|
|
|
Global options:
|
|
|
|
--version Show version
|
|
|
|
-h, --help Show this help
|
|
|
|
|
|
|
|
Pack options:
|
2024-01-03 17:14:03 +00:00
|
|
|
-i REGEXP, --ignore=REGEXP Ignore file or directory
|
|
|
|
-o FILE, --output=FILE Write output to FILE
|
|
|
|
-H FILE, --header-prompt=FILE Load header prompt from FILE
|
|
|
|
-F FILE, --footer-prompt=FILE Load footer prompt from FILE
|
2024-01-04 11:42:34 +00:00
|
|
|
-c FILE, --config=FILE Load parameters from FILE
|
2023-12-29 13:13:20 +00:00
|
|
|
```
|
|
|
|
|
2023-12-29 14:05:51 +00:00
|
|
|
#### Basic Use Case
|
|
|
|
|
2023-12-29 13:57:11 +00:00
|
|
|
To preload all files in the `src` directory and output to `result.txt`, while
|
|
|
|
ignoring the `git` the `bin` directory, and the result file itself:
|
|
|
|
|
|
|
|
```bash
|
2024-01-04 11:42:34 +00:00
|
|
|
./bin/code-preloader pack -o result.txt -i .git -i result.txt -i bin/ src
|
2023-12-29 13:57:11 +00:00
|
|
|
```
|
|
|
|
|
2023-12-29 14:05:51 +00:00
|
|
|
#### Advanced Use Case
|
|
|
|
|
2023-12-29 13:57:11 +00:00
|
|
|
To preload all files in the `src` directory and output to clipboard, prepending
|
|
|
|
and appending prompts, while ignoring the `git` the `bin` directory, and the
|
|
|
|
result file itself:
|
|
|
|
|
|
|
|
```bash
|
2024-01-04 11:42:34 +00:00
|
|
|
./bin/code-preloader pack \
|
2023-12-29 13:57:11 +00:00
|
|
|
-i .git -i bin/ -i result.txt -i prompts \
|
2024-01-03 17:02:40 +00:00
|
|
|
-H prompts/context.txt -F prompts/request-readme.txt \
|
2023-12-29 13:57:11 +00:00
|
|
|
src \
|
2024-01-03 16:57:02 +00:00
|
|
|
| ctrlc
|
2023-12-29 13:57:11 +00:00
|
|
|
```
|
|
|
|
|
2024-01-04 11:47:30 +00:00
|
|
|
__Note:__ the command `ctrlc` in previous command is an alias to `xclip
|
|
|
|
-selection clipboard -i`
|
2024-01-03 16:57:02 +00:00
|
|
|
|
2024-01-04 11:44:08 +00:00
|
|
|
### Using a config file
|
2024-01-04 11:42:34 +00:00
|
|
|
|
2024-01-04 11:44:08 +00:00
|
|
|
You can automatically create an empty configuratio file by running
|
|
|
|
Code-Preloader with the following command-line options:
|
2024-01-04 11:42:34 +00:00
|
|
|
|
|
|
|
```
|
|
|
|
Usage: code-preloader init [options]
|
|
|
|
|
|
|
|
Global options:
|
|
|
|
--version Show version
|
|
|
|
-h, --help Show this help
|
|
|
|
|
|
|
|
Init options:
|
|
|
|
-c FILE, --config=FILE Load parameters from FILE
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Example: Advanced with configuration file
|
2023-12-29 15:35:13 +00:00
|
|
|
|
2024-01-04 11:47:30 +00:00
|
|
|
Create an empty configuration file with
|
|
|
|
|
|
|
|
```bash
|
|
|
|
./bin/code-preloader init -c .code_preloader.yml
|
|
|
|
```
|
|
|
|
Adapt the configuration file (`.code_preloader.yml`) to your needs:
|
2023-12-29 15:35:13 +00:00
|
|
|
|
2024-01-03 16:53:01 +00:00
|
|
|
```yaml
|
2023-12-29 15:35:13 +00:00
|
|
|
---
|
|
|
|
ignore_list:
|
|
|
|
- .git
|
2024-01-03 16:57:02 +00:00
|
|
|
- code_preloader.yml
|
2023-12-29 15:35:13 +00:00
|
|
|
- bin
|
|
|
|
- prompts
|
|
|
|
|
2024-01-03 16:58:31 +00:00
|
|
|
output_file_path: null
|
2024-01-03 17:02:40 +00:00
|
|
|
header_prompt_file_path: prompts/context.txt
|
|
|
|
footer_prompt_file_path: prompts/request-readme.txt
|
2023-12-29 15:35:13 +00:00
|
|
|
```
|
|
|
|
|
2024-01-04 11:47:30 +00:00
|
|
|
Then you can type a shorter command like:
|
2023-12-29 15:35:13 +00:00
|
|
|
|
|
|
|
```bash
|
2024-01-04 11:47:30 +00:00
|
|
|
./bin/code-preloader pack -c .code_preloader.yml src | ctrlc
|
2023-12-29 15:35:13 +00:00
|
|
|
```
|
|
|
|
|
2024-01-04 11:47:30 +00:00
|
|
|
__Note:__ the command `ctrlc` in previous command is an alias to `xclip
|
|
|
|
-selection clipboard -i`
|
2023-12-29 15:35:13 +00:00
|
|
|
|
2023-12-29 13:57:11 +00:00
|
|
|
## Contributing
|
|
|
|
|
|
|
|
Contributions are what make the open-source community such an amazing place to
|
|
|
|
learn, inspire, and create. Any contributions you make are **greatly
|
|
|
|
appreciated**.
|
|
|
|
|
|
|
|
## Troubleshooting and Support
|
|
|
|
|
|
|
|
If you encounter any issues or need support, please open an issue in the
|
|
|
|
project's GitHub issue tracker. We strive to be responsive and helpful.
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
Distributed under the LGPL-3.0-or-later License. See `LICENSE` file for more
|
|
|
|
information.
|
|
|
|
|
|
|
|
## Acknowledgments
|
|
|
|
|
2023-12-29 14:05:51 +00:00
|
|
|
* A special thanks to all contributors and users of this project for their valuable feedback and support.
|
|
|
|
* Inspired by the community's need for efficient code preparation tools in the context of AI-assisted programming.
|
|
|
|
|
|
|
|
## Related projects
|
|
|
|
|
|
|
|
* [mpoon/gpt-repository-loader](https://github.com/mpoon/gpt-repository-loader)
|
2023-12-29 13:57:11 +00:00
|
|
|
|