Crates.io | builder-rust |
lib.rs | builder-rust |
version | 0.2.0 |
source | src |
created_at | 2024-03-08 14:20:57.671445 |
updated_at | 2024-03-08 23:10:12.405477 |
description | A Tinted Theming template builder which uses yaml color schemes to generate theme files. |
homepage | https://github.com/tinted-theming/builder-rust |
repository | https://github.com/tinted-theming/builder-rust |
max_upload_size | |
id | 1166921 |
size | 385,336 |
Note: This project has been renamed to tinted-builder-rust to have a less generic name. Please update to use tinted-builder-rust.
A builder for base16 and base24 templates using the 0.11.0
builder
specification.
This crate contains a command-line tool to build base16 and base24 templates. It is also a library crate which you can use to directly build templates within your own Rust application.
Cargo
cargo install builder-rust
Homebrew
brew tap tinted-theming/tinted
brew install builder-rust
Binaries
Download the relevant binary from the repository releases page.
builder-rust sync # To sync with latest schemes
builder-rust build path/to/base16-template
The following is a table of the available subcommands for the CLI tool (builder-rust), including the descriptions and any notable arguments.
Subcommand | Description | Arguments | Example Usage |
---|---|---|---|
sync |
Installs and or updates latest schemes. | - | builder-rust sync |
build |
Builds the themes of a template. | template_path : Path to template directory. |
builder-rust build ./path/to/base16-template |
Flag/Option | Description | Applicable Subcommands | Default Value | Example Usage |
---|---|---|---|---|
--schemes-dir -s |
Path to a custom local schemes directory to use when building. Only necessary if the latest schemes repository is not desired. | build |
builder-rust build . --schemes-dir=/path/to/schemes/dir |
|
--data-dir -d |
Specifies a custom path for the data directory. | All | Linux: $XDG_DATA_HOME/tinted-theming/builder-rust or ~/.local/share . MacOS: ~/Library/Application\ Support/tinted-theming/builder-rust |
builder-rust sync --data-dir /path/to/custom/data-dir |
--help -h |
Displays help information for the subcommand. | All | - | builder-rust --help , builder-rust build --help , etc |
--version -V |
Shows the version of builder-rust. | All | - | builder-rust --version |
builder-rust implements the 0.11.0
builder specification. This
specification details the scheme yaml format or schema as well as the
variables the builder should provide when rendering template mustache
file. Have a look at the builder specification document for more
details.
This library exposes a Scheme
and Template
struct which you can
use to generate your own themes using base16 and base24 templates and
0.11.0
compliant base16 and base24 scheme files.
Internally builder-rust uses ramhorns to render the templates.
cargo add builder-rust
use builder_rust::{Scheme, Template};
use std::fs::read_to_string;
let template_str = read_to_string("path/to/template.mustache").unwrap();
let scheme_str = read_to_string("path/to/scheme.yml").unwrap();
let template = Template::new(template_str).unwrap();
let scheme: Scheme = serde_yaml::from_str(&scheme_str).unwrap();
template
.render_to_file("path/to/rendered/template", &scheme)
.unwrap();
The Scheme struct is as follows:
pub struct Scheme {
pub system: String,
pub name: String,
pub slug: String,
pub author: String,
pub description: Option<String>,
pub variant: String,
pub palette: HashMap<String, Color>,
}
pub struct Color {
pub hex: (String, String, String),
pub rgb: (u8, u8, u8),
pub dec: (f32, f32, f32),
}
Template::new
The Template
struct simply sets the content provided to it via
Template::new
.
template.render_to_file(&scheme)
takes the scheme and generates the
variables defined in the 0.11.0
builder specification.
Contributions are welcome! Have a look at CONTRIBUTING.md for more information.
This project uses Ramhorns, which is under the GPL-3 license. While most Tinted Theming projects are under the MIT license, this project is under the GPL-3 license since it consumes Ramhorns. See the LICENSE file for more details and the license.html for containing the licenses of the used crates within the project.