# Bendis
[](https://crates.io/crates/bendis)
[](https://crates.io/crates/bendis)
[](https://github.com/albertc9/Bendis)
[](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.6 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.
#### 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/`
└── ...
```