bendis 0.5.5

A patch tool for Bender to work better in HERIS project

# Bendis

[![Crates.io](https://img.shields.io/crates/v/bendis.svg)](https://crates.io/crates/bendis)
[![Crates.io Downloads](https://img.shields.io/crates/d/bendis)](https://crates.io/crates/bendis)
[![GitHub](https://img.shields.io/badge/GitHub-Bendis-black?logo=github)](https://github.com/albertc9/Bendis)
[![GitLab](https://img.shields.io/badge/GitLab-IHEP%20Repo-orange?logo=gitlab)](https://code.ihep.ac.cn/heris/bendis)


A patch tool for Bender to work better in the HERIS project.

> Author: Albert L. ZHANG, IHEP 
> 
> Email: albert.cheung@cern.ch
---

### Links

- **Crates.io:** https://crates.io/crates/bendis  
- **GitHub:** https://github.com/albertc9/Bendis  
- **GitLab (IHEP internal):** https://code.ihep.ac.cn/heris/bendis  
- **Bendis For Users**: https://code.ihep.ac.cn/heris/gitlab-profile/-/wikis/Bendis-For-Users

---

### Features

- **URL Conversion**: Automatically converts GitHub URLs to IHEP internal Git URLs  
- **Seamless Integration**: Works as a drop-in replacement for Bender  
- **Fast**: Written in Rust for optimal performance  

---

### Installation

```bash
cargo install bendis
```

---

### Usage

#### Initialize a project

```bash
bendis init
```

Creates a `bendis_workspace/` directory with blank `Bender.yml` and `.bender.yml`.

#### Update dependencies

When using Bendis, **only edit the configuration files inside `bendis_workspace/`**.
The copies in the project root will be overwritten.

Update dependencies with:

```bash
bendis update
```

With Bendis 0.5.5 or later, prepare dependencies for RTL hardening and activate the
resulting local RTL by placing the `aegisrtl` repository next to the project root and running:

```bash
bendis update --hard
```

Hard mode requires a Bender version with `script template-json` support. If
`../aegisrtl/scripts/harden.sh` is missing, Bendis reports that hardening was skipped and
activates the local unmodified RTL.

#### Other commands

All other commands are passed through to Bender transparently.

---

### File Structure

> `(***)`: You may interest in and can be edited.
> `(-)`: Nobody, or generated automatically. Don't edit them if you don't understand Bendis.

```
pulpissimo/
├── bendis_workspace/       # Bendis working directory
│   ├── .bender/            # (-)Bender cache folder (optional on Bendis config)
│   ├── Bender.yml          # (***)The config you need to edit
│   ├── .bender.yml         # (***)The overrides config you may need to edit
│   ├── Bender.lock         # (-)Generated by bendis automatically
│   ├── hw/                 # (***)Some dependencies of pulpissimo
│   └── target/             # (***)Some dependencies of pulpissimo
├── Bender.yml              # (-)Converted config
├── .bender.yml             # (-)Converted overrides (IHEP URLs)
├── Bender.lock             # (-)Final lock file generated automatically
├── .bender/                # (-)Dependencies directory generated automatically
├── hw/                     # (-)Some dependencies automaticaly updated from `bendis_workspace/`
├── target/                 # (-)Some dependencies automaticaly updated from `bendis_workspace/`
└── ...
```