rgon 0.2.0

A command-line tool written in Rust that searches for a query string within a file, similar to the grep command in Unix-like systems.
Documentation
# rgon - A simple Rust-based grep clone


`rgon` is a command-line tool written in Rust that searches for a query string within a file, similar to the `grep` command in Unix-like systems. It supports case-insensitive searching if an environment variable is set.

## Features


- Search for a query string in a text file.
- Case-insensitive search if the `IGNORE_CASE` environment variable is set.
- Prints matching lines from the file.

## Installation


To use `rgon`, you'll need to have Rust and Cargo installed. If you don't have them, you can install them from [https://rust-lang.org](https://rust-lang.org).

To install and run `rgon`, clone the repository and build the project:

```bash
git clone https://github.com/jmeq17/rgon.git
cd rgon
cargo build --release
```

## Usage


Once installed, you can use `rgon` by running the following command:

```bash
cargo run <query> <file_path>
```

### Example


```bash
cargo run "to" "assets/tinyTale.txt"
```

This will search for the string `"to"` in the file `assets/tinyTale.txt` and print all matching lines.

### Case-Insensitive Search


To perform a case-insensitive search, set the `IGNORE_CASE` environment variable:

```bash
IGNORE_CASE=1 cargo run "To" "assets/tinyTale.txt"
```

This will match both `"To"` and `"to"` in the file.

## Code Structure


- **`Config` struct**: Holds the query string, file path, and case-insensitive flag.
- **`run` function**: Executes the search based on the provided configuration.
- **`search` function**: Searches for a query in the contents of a file.
- **`search_case_insensitive` function**: Searches for a query in the contents of a file, ignoring case.
- **Tests**: Includes unit tests for both case-sensitive and case-insensitive search functions.

## Tests


To run the tests:

```bash
cargo test
```

This will run the unit tests for `search` and `search_case_insensitive` functions.

## License


This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.