Awesome
tinted-builder-rust
A builder for base16 and base24 templates using the 0.11.1
builder
specification.
This repo contains a command-line tool, tinted-builder-rust, to build base16 and base24 templates. It is also contains a library crate, tinted-builder, which you can use to directly build templates within your own Rust application.
Table of Contents
CLI
Installation
Cargo
cargo install tinted-builder-rust
Homebrew
brew tap tinted-theming/tinted
brew install tinted-builder-rust
Binaries
Download the relevant binary from the repository releases page.
Basic Usage
tinted-builder-rust sync # To sync with latest schemes
tinted-builder-rust build path/to/base16-template
Commands
The following is a table of the available subcommands for the CLI tool (tinted-builder-rust), including the descriptions and any notable arguments.
Subcommand | Description | Arguments | Example Usage | Flags |
---|---|---|---|---|
sync | Installs and or updates latest schemes. | - | tinted-builder-rust sync | --quiet (silence stderr and stdout) |
build | Builds the themes of a template. | template_path : Path to template directory. | tinted-builder-rust build ./path/to/base16-template | --quiet (silence stderr and stdout), --sync (equivalent of running tinted-builder-rust sync before tinted-builder-rust build ) |
Flags
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 | tinted-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/tinted-builder-rust or ~/.local/share . MacOS: ~/Library/Application\ Support/tinted-theming/tinted-builder-rust | tinted-builder-rust sync --data-dir /path/to/custom/data-dir |
--help -h | Displays help information for the subcommand. | All | - | tinted-builder-rust --help , tinted-builder-rust build --help , etc |
--version -V | Shows the version of tinted-builder-rust. | All | - | tinted-builder-rust --version |
Builder specification
tinted-builder-rust implements the 0.11.1
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.
Library
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.1
compliant base16 and base24 scheme files.
Internally tinted-builder-rust uses ribboncurls to render the templates.
Library installation
cargo add tinted-builder-rust
Library Usage
use tinted_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 scheme = Scheme::Base16(serde_yaml::from_str(&scheme_str).unwrap());
let template = Template::new(template_str, scheme);
template
.render()
.unwrap();
The Scheme struct is as follows:
use std::collections::HashMap;
use tinted_builder::{SchemeSystem, SchemeVariant};
pub struct Scheme {
pub system: SchemeSystem,
pub name: String,
pub slug: String,
pub author: String,
pub description: Option<String>,
pub variant: SchemeVariant,
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.1
builder specification.
Contributing
Contributions are welcome! Have a look at CONTRIBUTING.md for more information.
License
Ribboncurls is dual-licensed under the [Apache 2.0] and [MIT] licenses. For more information about the licenses of the projects used by Ribboncurls, have a look at LICENSES-THIRD-PARTY.md.