#single-file #bundle #merge #source #build

bin+lib rustsourcebundler

Bundle the source code of a rust cargo crate in a single source file

22 releases (11 breaking)

0.14.1 Mar 17, 2025
0.14.0 Dec 30, 2024
0.13.0 Jun 17, 2024
0.11.6 Jan 30, 2024
0.1.1 Jun 27, 2017

#944 in Command line utilities

Download history 3/week @ 2024-12-10 58/week @ 2024-12-24 55/week @ 2024-12-31 8/week @ 2025-01-07 1/week @ 2025-01-14 12/week @ 2025-02-04 3/week @ 2025-02-25 3/week @ 2025-03-04 53/week @ 2025-03-11 63/week @ 2025-03-18 4/week @ 2025-03-25

125 downloads per month

MIT license

17KB
258 lines

CI coveralls crates.io

rust-sourcebundler

Bundle the source code of a rust cargo crate in a single source file.

Very useful for sending the source code to a competitive programming site that accept only a single file (codingame, I'm looking at you) and still keeping the cargo structure locally.

Usage

Add the following snippet to your Cargo.toml:

[package]
(...)
build = "build.rs"

[build-dependencies]
rustsourcebundler = { git = "https://github.com/lpenz/rust-sourcebundler" }

And create the file build.rs with the following:

//! Bundle mybin.rs and the crate libraries into singlefile.rs

use std::path::Path;
extern crate rustsourcebundler;
use rustsourcebundler::Bundler;

fn main() {
    let mut bundler: Bundler = Bundler::new(Path::new("src/bin/mybin.rs"),
                                            Path::new("src/bin/singlefile.rs"));
    bundler.crate_name("<crate name>");
    bundler.run();
}

You can use the code inside the example directory of this repository as a starting point.

Similar Projects

Dependencies

~3.5–5.5MB
~98K SLoC