# Rust ❤️ Bazel: rules_probe_rs

<p align="center">

<a href="https://github.com/hexdae/rules_probe_rs/blob/master/LICENSE">
    <img alt="GitHub license" src="https://img.shields.io/github/license/hexdae/rules_probe_rs?color=success">
</a>

<a href="https://github.com/hexdae/rules_probe_rs/stargazers">
    <img alt="GitHub stars" src="https://img.shields.io/github/stars/hexdae/rules_probe_rs?color=success">
</a>

<a href="https://github.com/hexdae/rules_probe_rs/issues">
    <img alt="GitHub issues" src="https://img.shields.io/github/issues/hexdae/rules_probe_rs">
</a>

</p>

<p align="center">

<img src="https://probe.rs/images/banner.svg" width="100px"/>
<img src="https://blog.bazel.build/images/bazel-icon.svg" width="100px"/>

</p>

This project aims to provide a simple way to run probe-rs from bazel, similar to the function `cargo embed` has in the rust ecosystem.

If this project was useful to you, give it a ⭐️ and I'll keep improving it!

## Features

- [MODULE support](#bzlmod)
- [Examples](./examples)
- Remote execution support
- Linux, MacOS, Windows

## Installation

### Official releases

Official releases are available in the BCR, and also at
<https://github.com/hexdae/rules_probe_rs/releases>.

```python
bazel_dep(name = "rules_probe_rs", version = "<version>")

probe_rs = use_extension("@rules_probe_rs//probe_rs:extensions.bzl", "probe_rs")
probe_rs.tools(version = "0.27.0",)
use_repo(probe_rs, "probe_rs")
```

### From source (this repository)

```python
bazel_dep(name = "rules_probe_rs", version = "<version>")

git_override(
    module_name = "rules_probe_rs",
    remote = "https://github.com/hexdae/rules_probe_rs.git",
    commit = "<commit>",
)

probe_rs = use_extension("@rules_probe_rs//probe_rs:extensions.bzl", "probe_rs")
probe_rs.tools(version = "0.27.0",)
use_repo(probe_rs, "probe_rs")
```

## RTT support using `DEFMT_LOG`

You can enable RTT support for a specific target by adding the following to your `BUILD.bazel` rust_binary target.

```
rust_binary(
    ...
    rustc_env = {
        "DEFMT_LOG": "trace",
    },
    ...
)
```

Alternatively, you can enable RTT support for all targets by adding the following to your `.bazelrc`.

```
build --action_env=DEFMT_LOG="trace"
```
