bendis 0.5.8

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.8 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 RTL without hardening. Bendis reuses existing Bender caches and only
retries checkout with remote access when local dependencies are incomplete.
Project-local Path entries are normalized before the AegisRTL workspace is prepared.

#### 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/`
└── ...
```