blazelint 0.1.0

A code linter for Ballerina programming language
###### *<div align="right"><sub>// by RuztyCrabs</sub></div>*

<img src="docs/assets/Blazelint-banner.webp" alt="BlazeLint banner" style="width: 2000px; height: auto;">

##

> [!CAUTION]
> This program is still in **early-development** and some critical components are not yet fully implemented.

## Documentation

*   [BNF Grammar for Ballerina Subset]docs/BNF.md
* [Software Requirement Specification (SRS)]https://github.com/Chamal1120/Blazelint/releases/latest/download/software_requirements_analysis.pdf
*   [Pipeline overview]docs/pipeline_overview.md

## Building

### Prerequsites

- Git 2.51.0 or newer
- Rust Toolchain 1.86.0 or newer

### Steps

1. Create a fork and clone to local:

```bash
git clone https://github.com/<your-profile-name>/Blazelint.git
```

2. `cd` into the directory:

```bash
cd Blazelint
```

3. Build with cargo:

```bash
cargo build --release
```
> [!NOTE]
> Cargo build will download any required dependancies automatically but you can explicitly get them using `cargo fetch` if still complains about missing libraries.

## Debugging

### Prerequsites

- Build requirements stated [here]#building.
- VsCode IDE
- [Rust Analyzer extension by rust-lang.org]https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer
- [CodeLLDB extension by Vadim Chugunov]https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb

### Steps
- You can adjust the `tests/test.bal` file if you need to debug a specific diagnostic.
- Set breakpoints as needed.
- Click on **Run and Debug** from the main method or use `ctrl+shift+D` to jump to debug menu.

> [!NOTE]
> It is possible to debug with any IDE including Neovim, Emacs and etc but we recommend vscode for easier setup. 

## Contributing

Run all formatter, lint, and test checks locally before opening a pull request:

```bash
bash scripts/check.sh
```
> [!NOTE]
> Cargo will download dev dependancies automatically but you can explicitly get them using `cargo fetch` if still complains about missing libraries.

## TODO

Roadmap of the project can be viewed from [here](TODO.md).

## License

This project is licensed under the [MIT License](LICENSE).