14 unstable releases (4 breaking)
0.5.2 | Aug 22, 2022 |
---|---|
0.5.1 | Jul 31, 2022 |
0.4.7 | Jul 25, 2022 |
0.3.4 | Dec 28, 2021 |
0.1.9 | Feb 28, 2019 |
#1667 in Development tools
57KB
1.5K
SLoC
Reframe
Because "don't repeat yourself"
If you need build project in matter of seconds, this tool for you.
For detail usage please check Reframe Documentation.
Install
Homebrew
For Mac with homebrew:
brew tap ansvia/tools
brew install reframe
Cargo
Or, if you have Cargo, type:
$ cargo install reframe
Download binary
Download binary for your specific platform from release page.
Usage
$ reframe [SOURCE]
Example
$ reframe anvie/basic-rust
anvie/basic-rust
is refering to my github repo: basic-rust.rf.
Build Source
To create Reframe source is super duper easy, all you needs is write Reframe.toml
at the root project dir, example:
[project]
name = "Hello World"
version = "1.0"
[[param]]
with_serde = { ask = "Dengan serde?", default = false }
[[param]]
serde_version = { ask = "Versi serde?", default = "1.0", if="with_serde" }
[[param]]
# without default value means required
author_name = { ask = "Author name?" }
[[param]]
author_email = { ask = "Author email?" }
Every string type param will have case variants automagically, eg: author_name
will have: author_name_lowercase
, author_name_snake_case
, author_name_kebab_case
.
So when you need to get project name with snake case, write: $name_snake_case$.
When you done, you can test using reframe [YOUR-WORKING-TEMPLATE-DIR]
,
if all is ok, push the project to your github repo with additional postfix .rf
at the project name, eg: if your repo name is unicorn
then you must push with name unicorn.rf
, and finally you can use anywhere by simply typing:
$ reframe [MY-GITHUB-USERNAME]/[MY-TEMPLATE]
Example:
$ reframe agus/unicorn
For detail usage please check Reframe Documentation.
Reframe source examples:
Supported case variants:
*_lower_case
-> my cool app*_snake_case
-> my_cool_app*_kebab_case
-> my-cool-app*_shout_snake_case
-> MY_COOL_APP*_upper_case
-> MY COOL APP*_camel_case
-> myCoolApp*_pascal_case
-> MyCoolApp
You can also use builtin variables:
year
-> Print current year, eg: 2019.month_name
-> Print current month, eg: July
Templating
Reframe also support templating engine for manipulating code use Handlebars syntax, example:
{{#if with_jwt}}
const jwt = require('jsonwebtoken');
{{/if}}
Available sources:
- anvie/basic-rust-cli.rf - Basic CLI application.
- anvie/rust-grpc.rf - Rust gRPC application.
For more sources see SOURCES.
You can also list available sources by typing:
reframe --list
Dependencies
~21–41MB
~631K SLoC