项目作者: nakabonne

项目描述 :
Temporary edit external crates that your project depends on
高级语言: Rust
项目地址: git://github.com/nakabonne/rhack.git
创建时间: 2021-02-27T04:53:25Z
项目社区:https://github.com/nakabonne/rhack

开源协议:BSD 3-Clause "New" or "Revised" License

下载


rhack

Version info

You want to quickly put a sneaky macro kind of like dbg! into external crates to find out how some internal data structure works? If so rhack is for you!

rhack makes it easier to edit external crates code that your project depends on.

Usage

Let’s say you want to modify the reqwest crate.

  1. [dependencies]
  2. reqwest = "0.11"

Run the following:

  1. $ rhack edit reqwest

This will make a copy of the crate into $HOME/.rhack/reqwest-0.11.1 and add its path to the [patch] section in your Cargo.toml whose path is automatically detected:

  1. [patch.crates-io]
  2. reqwest = { path = "/home/you/.rhack/reqwest-0.11.1" }

Now your package uses the locally checked out copy instead of one from crates.io. You can now open the files (typically by leveraging the “Jump to Definition” feature) and then feel free to modify the source code.

Undoing

Simply run the undo command then you can undo all of the changes to your Cargo.toml:

  1. $ rhack undo

Keep in mind that this command doesn’t remove any copy of crates.

Settings

It uses $HOME/.rhack as the destination to copy the source code of the external crates by default. You can change it by setting and exposing the $RHACK_DIR environment variable.

Installation

For MacOS, Linux, and Windows, prebuilt binaries are available through here.

Debian/Ubuntu

  1. wget https://github.com/nakabonne/rhack/releases/download/v0.1.0/rhack_linux_amd64.deb
  2. apt install ./rhack_linux_amd64.deb

Arch Linux

An AUR package is available.

  1. yay rhack

Cargo

  1. cargo install rhack

From source

  1. git clone https://github.com/nakabonne/rhack.git
  2. cargo build --release
  3. sudo install -m755 target/release/rhack /usr/local/bin/rhack

If you want to generate the man page, you can install it with scdoc.

  1. sudo mkdir -p /usr/local/share/man/man1
  2. scdoc < rhack.1.scd > rhack.1
  3. sudo install -m644 rhack.1 /usr/local/share/man/man1/rhack.1

Acknowledgements

This tool is highly inspired by gohack. It clearly stimulated an incentive to creation. A big “thank you!” goes out to them.