whip-up

Crates.iowhip-up
lib.rswhip-up
version0.1.0
sourcesrc
created_at2020-03-20 18:41:11.194036
updated_at2020-03-20 18:41:11.194036
descriptionBuild system with strong typing
homepagehttps://github.com/maspe36/whip-up/
repositoryhttps://github.com/maspe36/whip-up/
max_upload_size
id220762
size14,791
Sam Privett (maspe36)

documentation

https://github.com/maspe36/whip-up/

README

whip-up

whip-up is a build system with strong typing. .whip files are effectively arbitrary rust code*.

  • = With the exception of the Compiler and Target struct. Which are part of the internals of whip-up.

Example

.whip file

let gpp = Compiler {
    path: PathBuf::from("/usr/bin/g++"),
};

let example_program = Target {
    name: "example_program",
    compiler: gpp,
    files: vec![
        PathBuf::from("main.cpp"),
        PathBuf::from("foo/bar.hpp")
    ]
};

example_program.build()

Output g++ command which gets run

/usr/bin/g++ -o example_project main.cpp foo/bar.hpp

Usage

Say we have the following folder structure and a .whip file with the same contents as the example above.

projects/
|
└─── examples/
     |
     └─── foo/
     |    └─── bar.hpp
     |
     |    example.whip
     └─── main.cpp

Running whip-up examples/ from the projects folder will result in a binary being built in the examples folder

projects/
|
└─── examples/
     |
     └─── foo/
     |    └─── bar.hpp
     |
     |    example.whip
     |    example_program
     └─── main.cpp

About

I started working on this project during the COVID-19 pandemic. I was bored inside and decided to do something productive.

Currently this project is incredibly bare-bones and rather hacky. It should go without saying, but whip-up is not recommended for use in production.

Commit count: 3

cargo fmt