/rust-bundler

Creates a single-source-file version of a Cargo package

Primary LanguageRustMIT LicenseMIT

rust-bundler

Creates a single-source-file version of a Cargo package.

Build status Coverage report Crates.io

Features

  • Replaces extern crate my_lib; in main.rs with the contents of lib.rs.
  • Expands mod my_mod; declarations into mod my_mod { ... } blocks.

Example

Input:

// src/internal.rs:
pub fn hello_world() {
    println!("Hello, world!");
}

// src/lib.rs:
mod internal;
pub use internal::hello_world;

// src/main.rs:
extern crate example;
fn main() {
    example::hello_world();
}

Output:

mod internal {
    pub fn hello_world() {
        println!("Hello, world!");
    }
}
pub use internal::hello_world;
fn main() {
    hello_world();
}

More examples in tests/testdata.

Usage

Install:

$ cargo install bundler

Run:

$ bundle path/to/project >output.rs

Library Usage

[dependencies]
bundler = "0.1"
extern crate bundler;

fn main() {
    let code = bundler::bundle("path/to/project");
    println!("{}", code);
}

Similar Projects