Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/herbygillot/cargo2ports

Generate cargo.crates stanzas for MacPorts from a Rust project's Cargo.lock file
https://github.com/herbygillot/cargo2ports

macports rust-cargo

Last synced: 30 days ago
JSON representation

Generate cargo.crates stanzas for MacPorts from a Rust project's Cargo.lock file

Awesome Lists containing this project

README

        

# cargo2ports

Simple Python utility to generate a `cargo.crates` stanza for a MacPorts
Portfile from a Rust project's lockfile.

For example, taking in a `Cargo.lock` file that looks like this:

```
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "ahash"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c251dce3391a07b43218ca070203ecb8f9f520d35ab71312296a59dbceab154"
dependencies = [
"const-random",
]

[[package]]
name = "aho-corasick"
version = "0.7.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada"
dependencies = [
"memchr",
]
...
```

...this utility will generate this:

```
cargo.crates \
ahash 0.3.4 9c251dce3391a07b43218ca070203ecb8f9f520d35ab71312296a59dbceab154 \
aho-corasick 0.7.10 8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada \
ansi_term 0.11.0 ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b \
arrayref 0.3.6 a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544 \
arrayvec 0.5.1 cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8 \
atty 0.2.14 d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8 \
autocfg 1.0.0 f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d \
base64 0.11.0 b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7 \
bitflags 1.2.1 cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693 \
blake2b_simd 0.5.10 d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a \
...
```

### Installation

You can install `cargo2ports` by running the following command in a virtualenv:

```
python setup.py install
```

Follow these steps to install `pipx` from MacPorts and install `cargo2ports` globally

```
sudo port selfupdate
sudo port install pipx
pipx install git+https://github.com/herbygillot/cargo2ports.git
```

Note: Update your `$PATH` to add the pipx bin directory or update the `PIPX_BIN_DIR` environment variable.

### Usage

`cargo2ports ./Cargo.lock`

If you are already in a directory containing a `Cargo.lock` file, you run just the command with no parameters:

`cargo2ports`

If you would like to change the number of spaces each stanza line is indented by, use `-i`:

`cargo2ports -i 2 ./Cargo.lock`

You can also change the width of the field containing the name and version usin `-w`:

`cargo2ports -w 25 ./Cargo.lock`