deps-gen

Generate a file from template and Cargo.lock

5 unstable releases

0.2.0 Feb 24, 2024
0.1.1 Feb 24, 2024
0.1.0 Feb 24, 2024
0.0.2 Feb 23, 2024
0.0.1 Feb 23, 2024

MIT license

15KB
212 lines

deps-gen

From Cargo.lock to a generated file.

Why?

The goal is to generate a file from a template with dependencies from Cargo.lock.

How?

Build

In Cargo.toml, add the following line:

[build-dependencies]
deps-gen = "*"

then in your build.rs:

use deps_gen;

fn main() {
    gen_deps();
    // // or
    // let mut configuration = deps::Configuration::new()
    // // do some changes to configuration here
    // deps::gen_with_configuration(configuration);
}

The default configuration will take a src/deps.template.rs file and generate a src/deps.rs .

Templating

The library uses handlebars with the default supported syntax. The supported field are

  • dependencies, an array with the following values
    • name
    • version
    • authors
    • id
    • source
    • description
    • dependencies
    • license
    • license_file
    • targets
    • features
    • manifest_path
    • categories
    • keywords
    • readme
    • repository
    • homepage
    • documentation
    • edition

see Rust manifest reference for fields details

Also note that //{} is replaced with   (an empty string) after template processing. This allows to cleanup.

An example

deps.template.rs:

#[allow(dead_code)]

pub struct License {
    pub name: &'static str,
    pub version: &'static str,
}

impl License {
    pub fn all() -> Vec<Self> {
        vec![
            //{}{{#each dependencies}}
            Self {
                name: "{{name}}",
                version: "{{version}}",
            },
            //{}{{/each}}
        ]
    }
}

Dependencies

~3–4MB
~85K SLoC